Questão Como o Bash manipula variáveis ​​na memória?


Eu apenas me desafiei a encontrar e alterar um valor na memória usando scanmem e escreveu este script para incrementar um valor simples a cada 5 segundos.

  #!/bin/bash

  i=88 #start counting from..
  printf "Variable increments every 5s\n"
  while [ 1 ]
  do 
    printf "Variable is %d\n" $i
    sleep 5s
    if [ $i -eq 300 ]; then 
            printf "Variable is now 300! WELL DONE!!\n"
            exit 1
    else
            i=$(( $i + 1))

            if [ $i -gt 299 ]; then
                    printf "Time is up!\n"
                    exit 0
            fi
    fi
  done

Crappy scripting de lado (estou apostando que é isso me causando problemas embora!); Eu posso encontrar o valor (sempre 4 resultados) em 2 varreduras em scanmem anexado ao PID (de machado ps | grep bash) mas a variável se recusa a SET para 300. Confirmei que eles estão corretos usando UPDATE e LIST. Ele irá realmente SET, mas sempre retorna para o próximo incremento.

Então, por que o valor se recusa a ser alterado? script é executado como usuário, o scanmem é sudoed


1


origem




Respostas: