今天在写shell的过程中遇到个问题,用 XXX=$(ln -s XXX XXX) 想在运行软链接时候把错误输出赋值给一个变量,却怎么也赋值不了,最后发现应该是标准输出和标准错误的问题。一般来说$()只会得到命令的标准输出,而我们要拿到的是标准错误。
因此想了下面两个方法,都是可行的。
方法一:
ln -s XXX XXX 2>log
var=$(cat log)
echo $var
直接把标准错误输出到文件,然后在cat出来赋值给var变量;
方法二:
var=$(ln -s XXX XXX 2>&1)
echo $var
直接把标准错误输出给标准输出,这样就可以直接拿到了。不过有个弊端,如果标准输出是有内容的,则这个变量会即包含标准错误又包含标准输出。
(不过设置软链接一般都是没有标准输出的)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)