变量替换语法可以统一吗?

变量替换语法可以统一吗?

这两种变量替换语法可以合二为一吗?

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

相关内容