壳子在子壳中分裂

时间:2015-04-11 19:35:19

标签: bash shell variable-expansion

我在Shell和子shell中有关于单词拆分的信息不清楚。

示例:

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都显示了这种行为。

1 个答案:

答案 0 :(得分:2)

由于您在分支子shell之前将IFS设置为空字符串,因此它不会分词,但您仍然需要引用它以防止路径名扩展。