我想传递给我的tcsh脚本的最后一个参数。我注意到,通过echo测试,
echo ${*: -1:1}
返回一系列或参数中的LAST参数。太好了!
问题是,当我尝试将其放入if语句或附加到它时,我收到“Bad:modifier in $()”错误。这是为什么?
if ( -r ${*: -1:1}) then
echo "You have read permissions"
else
或同样的问题:
if ( ${*: -1:1}:e != tex) then
exit 2
endif
我尝试了推送
${*: -1:1}
在括号中,但无济于事。我也尝试过设置变量
set last = {*: -1:1}
然后在if语句中调用$ last,但这给了我一个“Missing}”错误。
思考?谢谢。
答案 0 :(得分:1)
嗯,你回答了自己的问题,但tcsh
(以及csh
)也有办法:
set count=$#argv
echo "There are $count arguments"
set last="${argv[$#argv]}"
echo "The last argument is $last"
如果您想从csh
中的列表中提取单词,请确保使用大括号{}
。
<强>测试强>
$ ./lastarg.csh 'a b' 'c d' 'e f'
There are 3 arguments
The last argument is e f
答案 1 :(得分:0)
结束使用
set Y = `echo $* | awk -F " " '{print $NF}'`
代替我的最后一个参数,这与tcsh兼容。为我解决了!