所有
我正在使用tcsh(我知道,这不好)。无论如何,我将变量定义为
set arqlink = `ls -aFl /usr/lib64/libelf* | awk '/->/{print $NF}' |
grep "libelf-0"`
但它不起作用,我不知道为什么,因为
ls -aFl /usr/lib64/libelf* | awk '/->/{print $NF}' | grep "libelf-0"
工作正常。
提前感谢。
最好的问候,
NC
答案 0 :(得分:1)
默认情况下tcsh
已设置nonomatch
。
nonomatch If set, a Filename substitution or Directory stack substitution (q.v.) which does not match any existing files is left untouched rather than causing an error.
设置此项,您的线路将正常工作。
set nonomatch
set arqlink = `ls -aFl /usr/lib64/libelf* | awk '/->/{print $NF}' | grep "libelf-0"`
或者,使用stat
,您无需设置nonomatch
。
set arglink = `stat -c %N /usr/lib64/libelf* | awk '/->/{print $NF}' | grep "libelf-0"`
最重要的是,-F
迫使ls
将*
附加到被视为no match
的文件名。您还可以更改原始命令并删除-F
。
答案 1 :(得分:0)
删除=
两侧的空格,并注意命令两侧添加的backtick
(非单引号)。
set arqlink=`ls -aFl /usr/lib64/libelf* | awk '/->/{print $NF}' |
grep "libelf-0"`