我知道处理文件名中的空格的一种技术是用单引号将文件名括起来:“'”。
为什么下面的代码“echo.sh”在包含带空格的文件名的目录上工作,但程序“ls.sh”不起作用,唯一的区别是将“echo”替换为“ls”?
回声.sh
#!/bin/sh
for f in *
do
echo "'$f'"
done
产生:
'ab
c''de
f''echo.sh''ls.sh
'
但是,“ls.sh”失败了:
#!/bin/sh
for f in *
do
ls "'$f'"
done
产生:
ls:无法访问'ab c':没有这样的文件或目录
ls:无法访问'de f':没有这样的文件或目录
ls:无法访问'echo.sh':没有这样的文件或目录
ls:无法访问' ls.sh':没有这样的文件或目录