我对 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 都显示了这种行为。
最佳答案
它不会进行单词分割,因为您在 fork 子 shell 之前将 IFS 设置为空字符串,但您仍然需要引用它以防止路径名扩展。
关于bash - 子 shell 中的 shell split ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29582151/