2

我对 Shell 和 subshel​​l 中的分词不清楚。

例子:

IFS=""
file_name="file with space"
file_name=$(real_path $file_name)

$file_name在子shell中分裂吗?还是我必须像这样双引号:

file_name=$(real_path "$file_name")

经过一番测试,我发现:

  • 如果我设置IFS=" "$file_name则被空格分割
  • 如果IFS=""然后将整体$file_name作为第一个参数传递。

到目前为止,ksh、dash 和 bash 都显示了这种行为。

4

1 回答 1

2

由于您在分叉子外壳之前将 IFS 设置为空字符串,因此它不会进行单词拆分,但您仍然必须引用它以防止路径名扩展。

于 2015-04-11T19:38:07.993 回答