我有一个名为inp.txt的文件,其中列出了3个目录名
#!/bin/sh
while read dirname
do
echo $dirname
"ls -l" $dirname
done < inp.txt
Run Code Online (Sandbox Code Playgroud)
当我运行上面的操作时,我收到此错误:
line 5: ls -l: command not found
Run Code Online (Sandbox Code Playgroud)
如果我只做"ls"而不是"ls -l",它可以正常工作.我在这里错过了什么?
摆脱报价.
while read dirname
do
echo "$dirname"
ls -l "$dirname"
done < inp.txt
Run Code Online (Sandbox Code Playgroud)
当你有引号时,你会说,"把它视为一个单词." shell查找名为的可执行文件,ls -l而不是将参数传递-l给命令ls.
Nitpicker注意:如果你想正确使用引号,请添加它们"$dirname".否则,如果你有一个名为"音乐文件"的目录,名称中有空格,没有引号,你的脚本会将其视为两个目录名称并打印如下:
ls: Music: No such file or directory
ls: Files: No such file or directory
Run Code Online (Sandbox Code Playgroud)