Respostas:
É muito parecido com os backticks ``.
É chamado substituição de comando ( especificação posix ) e invoca um subshell. O comando entre chaves $()
ou entre os backticks (``) é executado em um subshell e a saída é então colocada no comando original.
Ao contrário dos backticks, o $(...)
formulário pode ser aninhado. Portanto, você pode usar a substituição de comandos dentro de outra substituição.
Existem também diferenças nos caracteres de escape na substituição. Eu prefiro o $(...)
formulário.
echo `echo \`echo foo\`` bar
Em POSIX ou POSIX-como conchas ( ksh
, bash
, ash
, zsh
, yash
...), é como ``
: o interior de comando $()
é executado e substituído por sua saída padrão. A divisão de palavras e a geração de nome de arquivo são feitas, a menos que haja $()
aspas duplas. portanto
chmod 777 $(pwd)
deve ser substituído por:
chmod 777 "$(pwd)"
para evitar a divisão de palavras e a geração de nome de arquivo no caminho atual do diretório de trabalho.
Ou melhor ainda (exceto em alguns shells, como zsh, caso o diretório tenha sido renomeado):
chmod 777 "$PWD"
Since $PWD
é uma variável especial que mantém o caminho para o diretório de trabalho atual nos shells POSIX.
Ou melhor ainda:
chmod 777 .
Como a .
entrada no diretório atual é um link direto para o próprio diretório.
Isso $()
é usado para executar um comando principalmente dentro de algum outro comando.
chmod 777 $(pwd)
pwd
O comando fornece o diretório de trabalho atual. Portanto, quando tudo é executado, a saída do pwd substitui sua posição e serve como argumento para chmod
, e o resultado é que todo o seu diretório de trabalho atual recebe a permissão 777
que eu acho que nunca deve ser usada no ambiente de produção;).