我想知道以下两个命令之间的区别是什么?
ubuntu:~/bin$ (ls -A1 /home/ | wc -l)
1
ubuntu:~/bin$ $(ls -A1 /home/ | wc -l)
1: command not found
如果我dir_count=(ls -A1 /home/ | wc -l)
输入脚本,则会出现以下错误。
./two_args: line 24: syntax error near unexpected token `|'
./two_args: line 24: `dir_1_count=(ls -A1 "$dir_1" | wc -l)'
其中,以下工作原理:
dir_count=$(ls -A1 /home/ | wc -l)
$(command)
,是命令替换。它仅执行命令并替换命令的标准输出。
因此,如果要设置变量,只需: dir_count=$(ls -A1 /home/ | wc -l)
关于其余的代码:
(ls -A1 /home/ | wc -l)
该命令在子shell中执行命令。您可能不想要这些括号。
$(ls -A1 /home/ | wc -l)
这只是没有任何意义,您替换结果,这样就得到了1
,shell将尝试执行名为的命令1
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句