我知道处理文件名中空格的一种技术是用单引号将文件名引起来:“'”。
为什么下面的代码“echo.sh”可以在包含带空格的文件名的目录上工作,但是程序“ls.sh”却不起作用,唯一的区别是“echo”被“ls”替换了?
echo.sh
#!/bin/sh
for f in *
do
echo "'$f'"
done
Produces:
'a b c'
'd e f'
'回声.sh'
'ls.sh'
但是,“ls.sh”失败了:
#!/bin/sh
for f in *
do
ls "'$f'"
done
Produces:
ls: 无法访问 'abc': 没有这样的文件或目录
ls: 无法访问 'd e f': 没有这样的文件或目录
ls:无法访问“echo.sh”:没有这样的文件或目录
ls:无法访问“ls.sh”:没有这样的文件或目录
您实际上添加了多余的“'”(您的 echo 调用显示)
尝试这个:
#!/bin/sh
for f in *
do
ls "$f"
done
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)