bash - 子 shell 中的 shell split

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

最佳答案

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

关于bash - 子 shell 中的 shell split ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29582151/

相关文章:

当前路径的 Bash 引用 (pwd)

linux - Bash 脚本 : expansion of argument not using $@ or $*

string - Bash 在将字符串转换为参数时不解析引号

mysql - shell脚本将数据解析为变量然后更新数据库

bash - 在模式之后打印行,直到第二次出现不同的模式

linux - 如何在循环中连接两个带有标识符的文件?

linux - 如果在 bash 中运行特定命令,如何获得通知

Bash 变量扩展为 '/'

linux - 终止 MySQLd session 以返回命令提示符

python - subprocess.popen 在 cronjob 中不返回任何输出