为什么 rm -rf "$somedir/*" 不起作用(仅在引用时)?
Why doesn't rm -rf "$somedir/*" work (only when quoted)?
为什么这个命令有效:
sudo rm -rf ${server_tomcatHomeDir}temp/*
虽然相同,但带引号的 arg 不起作用:
sudo rm -rf "${server_tomcatHomeDir}temp/*"
它可能只与引号有关,但为什么这个命令即使在带引号的参数下也能正常工作:
sudo cp "$HOME/${artifact}" "${server_tomcatHomeDir}/webapps/${webapp}"
我听不懂。谁能澄清一下?
我只想在第一个命令中使用引号来防止通配和分词。
你必须把 *
放在引号外面,所以
sudo rm -rf "${server_tomcatHomeDir}temp/"*
这里的*
是一个路径名扩展(glob)标记,它将匹配文件名中任意数量的字符(包括零),并且不是扩展当放在引号内时,它会按字面意思处理。
做:
sudo rm -rf "${server_tomcatHomeDir}"temp/*
请注意,引用变量几乎总是一个好主意,尤其是在处理文件名以避免分词和路径名扩展时。
为什么这个命令有效:
sudo rm -rf ${server_tomcatHomeDir}temp/*
虽然相同,但带引号的 arg 不起作用:
sudo rm -rf "${server_tomcatHomeDir}temp/*"
它可能只与引号有关,但为什么这个命令即使在带引号的参数下也能正常工作:
sudo cp "$HOME/${artifact}" "${server_tomcatHomeDir}/webapps/${webapp}"
我听不懂。谁能澄清一下?
我只想在第一个命令中使用引号来防止通配和分词。
你必须把 *
放在引号外面,所以
sudo rm -rf "${server_tomcatHomeDir}temp/"*
这里的*
是一个路径名扩展(glob)标记,它将匹配文件名中任意数量的字符(包括零),并且不是扩展当放在引号内时,它会按字面意思处理。
做:
sudo rm -rf "${server_tomcatHomeDir}"temp/*
请注意,引用变量几乎总是一个好主意,尤其是在处理文件名以避免分词和路径名扩展时。