-
Eu uso o vim para escrever scripts de shell.
-
${TEMPDIR}
será expandido para o valor da variável denominada TEMPDIR.${TEMPDIR:=/tmp}
fará o mesmo, mas se estiver vazio (ou não definido), o valor / tmp será atribuído a TEMPDIR e também expandido.Ter
${TEMPDIR:=/tmp}
sozinho em uma linha fará com que seja alterado para, por exemplo,/tmp
que tentará executar/tmp
como um comando (o que obviamente falhará, já que você não pode executar um diretório). É por isso que o comando:
(null) é usado. O comando null ignora todas as entradas, todos os argumentos e não faz absolutamente nada. Executehelp :
para ver a descrição desse comando interno.Veja link Para as várias coisas que você pode fazer com a Expansão de Parâmetros.
-
[[ "$line2" > "$Line1" ]]
retornará verdadeiro se a linha2 classificar após a linha1 (como strcmp em C).[(comando "test") e comando [[(new test)] são usados para avaliar expressões. [[funciona apenas em Bash, Zsh e o shell Korn, e é mais poderoso; [e teste estão disponíveis em shells POSIX.
Consulte o link para obter a diferença entre o comando
[
e a palavra-chave[[
. -
?
é um parâmetro especial que detém o status de saída do último comando executado.$?
expande o valor desse parâmetro.
Em uma nota lateral, se esse for um exemplo do seu livro, eu diria que é uma fonte ruim para aprender bash. Recomendo a leitura do link que também ensina boas práticas.