Observe que não existe o comando shell de linha . Existem vários aplicativos de shell disponíveis para Linux.
Stéphane Chazelas
Respostas:
21
É 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.
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)
pwdO 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 777que eu acho que nunca deve ser usada no ambiente de produção;).
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.fonte
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. portantodeve ser substituído por:
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):
Since
$PWD
é uma variável especial que mantém o caminho para o diretório de trabalho atual nos shells POSIX.Ou melhor ainda:
Como a
.
entrada no diretório atual é um link direto para o próprio diretório.fonte
Isso
$()
é usado para executar um comando principalmente dentro de algum outro comando.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 parachmod
, e o resultado é que todo o seu diretório de trabalho atual recebe a permissão777
que eu acho que nunca deve ser usada no ambiente de produção;).fonte