为什么这个命令有效:
sudo rm -rf ${server_tomcatHomeDir}temp/*
虽然相同,但引用了arg,但不起作用:
sudo rm -rf "${server_tomcatHomeDir}temp/*"
它可能只与引号有关,但为什么这个命令即使用引用的args也可以工作:
sudo cp "$HOME/${artifact}" "${server_tomcatHomeDir}/webapps/${webapp}"
我无法理解。任何人都可以澄清吗?
我只想在第一个命令中使用引号来防止通配和分词。
答案 0 :(得分:4)
*
这里是一个路径名扩展(glob)令牌,它将匹配文件名中的任意数量的字符(包括零),当置于引号内时,不扩展,它按字面意思处理。
执行:
sudo rm -rf "${server_tomcatHomeDir}"temp/*
请注意,引用变量几乎总是一个好主意,特别是在处理文件名以避免单词拆分和路径名扩展时。
答案 1 :(得分:2)
您必须将*
放在引号之外,所以
sudo rm -rf "${server_tomcatHomeDir}temp/"*