在我的bash
脚本中,我经常使用可能包含空格的文件路径:
FOO=/path\ with\ spaces/
稍后,如果我想使用FOO
,我必须将其包装在引号("$FOO"
)中,否则它将被解释为列表(/path
,with
,spaces/
)。是否有更好的方法来强制变量永远不会被解释为列表?不断引用包装是很麻烦的。
答案 0 :(得分:4)
没有。您必须始终使用引号或bash将进行单词拆分([[
除外,但这是一种特殊情况)。
答案 1 :(得分:2)
您还可以更改内部字段分隔符IFS,如下所示:
ORIGIFS="$IFS"
IFS=$(echo -en "\n\b")
# do stuff...
IFS="$ORIGIFS"
然而,这会影响bash看起来进行字段拆分的所有情况,这可能比你想要的更宽泛。