Você criou uma variável chamada _now
, mas depois referencia uma variável chamada _nowout
. Para evitar esses problemas, use chaves para delimitar nomes de variáveis:
_now=$(date +"%m_%d_%Y")
_file="${_now}out.log"
touch "$_file.txt"
Observe que deixei "$_file.txt"
como está, porque .
já é um delimitador de nomes de variáveis. Em caso de dúvida, "${_file}.txt"
poderia ser usado da mesma forma.
Bônus 1: a sintaxe ${varname}
fornece várias operações de sequência úteis sobre variáveis, além de delimitar.
Bônus 2: escape e cotação do shell criativo também podem ser usados para delimitar nomes de variáveis. Você pode citar a variável e o literal de string separadamente (por exemplo, file="$_now""out.log"
ou file="$_now"'out.log'
) ou deixar uma das partes sem aspas (ou seja, file=$_now"out.log"
ou file="$_now"out.log
). Finalmente, você pode escapar de um único caractere que segue o nome da variável: file=$_now\out.log
. Embora eu não recomende a reutilização desses exemplos sem um bom entendimento das regras de citação e escape do shell.