在 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(使用前将#替换为@)