如何在 OS/X 中将 shell 变量设置为求值结果

2023-12-29

在 Linux Bash 中我可以执行以下操作:

$ export CP=$(cat classpath.txt)

如果我们执行“cat classpath”,我们会看到一个非常长的输出(这就是我不在这里重现的原因)。

然而在 OS/X 中,相同的命令会导致 CP 为空。该命令在 OS/X 中的等效项是什么?

2:21:59/mllib $ls -l classpath
-rw-r--r--  1 steve  staff  13162 Oct 28 12:19 classpath
12:26:46/mllib $export CP=$(cat classpath)
12:26:54/mllib $echo $CP

12:26:59/mllib $export CP=`cat classpath`
12:27:03/mllib $echo $CP

你总是想引用参数扩展。在这种情况下,

CP=$(cat classpath)

导致的价值CP含有一个*。自从你有了shopt -s nullglob,这会导致不匹配的 shell 模式扩展为空字符串而不是按字面意思处理,该命令

echo $CP

产生空字符串,因为CP进行了路径名扩展,但没有匹配任何文件。如果你引用了它:

echo "$CP"

它将输出路径,因为引用的扩展将not进行路径名扩展。


或者,关闭nullglob with

shopt -u nullglob

导致按字面意思处理不匹配的模式,因此echo $CP将产生不匹配的模式作为输出。不过,我不认为这是一个解决方案,因为它只有在模式与任何内容都不匹配时才“有效”。最好正确引用您的参数扩展。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 OS/X 中将 shell 变量设置为求值结果 的相关文章