这两种变量替换语法可以合二为一吗?
rm "$s_a/$domain.conf" 2>/dev/null
rm "$s_e/$domain.conf" 2>/dev/null
喜欢:
rm "$s_{a,e}/$domain.conf" 2>/dev/null
答案1
你能,但在引用扩展时则不然(因为双引号保留了字面意义最多“特殊字符”,包括大括号):
rm $s_{a,e}/$domain.conf
逐步扩展为:
rm $s_a/$domain.conf $s_e/$domain.conf
然后到相应的值。
在双引号内,大括号单独保留,因此该行扩展为:
R M($s_的值){a,e}/($domain 的值)配置文件
引用可以防止无意的扩展,特别是分词和文件名扩展。您可以通过取消设置来解决分词问题$IFS
,并且可以使用 来解决文件名扩展问题set -f
,组合为:
oIFS=$IFS
IFS=
set -f
rm $s_{a,e}/$domain.conf 2>/dev/null
IFS=$oIFS
set +f