在bash中,如何强制变量永远不会被解释为列表?

时间:2012-09-26 16:54:41

标签: bash

在我的bash脚本中,我经常使用可能包含空格的文件路径:

FOO=/path\ with\ spaces/

稍后,如果我想使用FOO,我必须将其包装在引号("$FOO")中,否则它将被解释为列表(/pathwithspaces/)。是否有更好的方法来强制变量永远不会被解释为列表?不断引用包装是很麻烦的。

2 个答案:

答案 0 :(得分:4)

没有。您必须始终使用引号或bash将进行单词拆分([[除外,但这是一种特殊情况)。

答案 1 :(得分:2)

您还可以更改内部字段分隔符IFS,如下所示:

ORIGIFS="$IFS"
IFS=$(echo -en "\n\b")
# do stuff...
IFS="$ORIGIFS"

然而,这会影响bash看起来进行字段拆分的所有情况,这可能比你想要的更宽泛。