Bash 在while循环中执行简单的命令-bourne shell脚本

Bash 在while循环中执行简单的命令-bourne shell脚本,bash,shell,Bash,Shell,我有一个名为inp.txt的文件,其中列出了3个目录名 #!/bin/sh while read dirname do echo $dirname "ls -l" $dirname done < inp.txt 如果我只做“ls”而不是“ls-l”,它工作得很好。我在这里遗漏了什么?你应该删除ls-l周围的引号你应该删除ls-l周围的引号 while read dirname do echo "$dirname" ls -l

我有一个名为inp.txt的文件,其中列出了3个目录名

#!/bin/sh
while read dirname
do
        echo $dirname
        "ls -l" $dirname
done < inp.txt

如果我只做“ls”而不是“ls-l”,它工作得很好。我在这里遗漏了什么?

你应该删除
ls-l
周围的引号你应该删除
ls-l
周围的引号

while read dirname
do
        echo "$dirname"
        ls -l "$dirname"
done < inp.txt
去掉那些引语

while read dirname
do
        echo "$dirname"
        ls -l "$dirname"
done < inp.txt

shell将空间解释为参数分隔符。通过在某物周围加引号,可以迫使shell将其视为一个参数。执行时,shell将第一个参数解释为要执行的命令。在本例中,您告诉它执行名为“ls-l”的命令,不带任何参数,而不是带参数“-l”的“ls”。

shell将空间解释为参数分隔符。通过在某物周围加引号,可以迫使shell将其视为一个参数。执行时,shell将第一个参数解释为要执行的命令。在本例中,您告诉它执行名为“ls-l”的命令,不带任何参数,而不是带参数“-l”的“ls”。

啊,好吧……所以我把引号放在了错误的位置:-)……谢谢!啊,好吧……所以我把引号放错地方了:——)……谢谢!
ls: Music: No such file or directory
ls: Files: No such file or directory