0

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

FOO=/path\ with\ spaces/

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

4

2 回答 2

4

不可以。您必须始终使用引号,否则 bash 将分词(除了 in [[,但这是一种特殊情况)。

于 2012-09-26T16:58:00.740 回答
2

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

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

但是,这会影响 bash 看起来进行字段拆分的所有情况,这可能比您想要的更广泛。

于 2012-09-26T22:34:51.430 回答