我有一个包含这种字符串的变量:
var='$FOO/bar/baz*'
我希望用其内容替换变量$ FOO。但是,当我做的时候
var=$(eval "echo $var")
变量被替换,但星号也被替换,以便var
现在包含我的文件系统中的每个可能的匹配(就像我在shell中按Tab键一样)。
例如,如果$ FOO包含/ home,var
将包含"/home/bar/baz1.sh /home/bar/baz2.sh /home/bar/baz.conf"
如何在不扩展通配符的情况下替换变量?
答案 0 :(得分:6)
在bash中关闭globbing,然后启用它。
set -f
var="$FOO/bar/baz*"
set +f
答案 1 :(得分:1)
只需删除引号:
var=$FOO/bar/baz/*
Glob不会在变量赋值的RHS上进行扩展。