【发布时间】:2016-04-27 09:18:31
【问题描述】:
在 bash 中:
使用双引号
echo "*" #Globbing is never done
echo "$variable" # Variable expansion is always done
echo "$(command)" # command expansion is always done
使用单引号
echo '*' #Globbing is never done
echo '$variable' # Variable expansion is never done
echo '$(command)' # command expansion is never done
不使用引号
echo * #Globbing always done.
echo $variable; # Variable expansion is always done
echo $(command) # command expansion is always done
这适用于所有命令吗?
【问题讨论】:
-
'!$"*<>通常是这些符号的优先顺序。 -
这些假设总是正确的——更有趣的地方是关于是否/如何对 results 执行其他处理步骤,例如字符串拆分或通配符这些扩展。毕竟,
"$foo"和$foo根本不是一回事,尽管两者总是发生扩展。 -
另外,重要的是要注意引号是每个字符的属性,因此可以执行
"$foo"/*之类的操作 -
太有趣了,我从其他人的答案中学到了一些东西:-)
标签: bash