我想创建一个csh别名,如果没有参数调用则执行一个操作,如果使用单个参数调用则执行第二个操作。有谁知道如何做到这一点? (试图引用未通过的参数会触发错误)。
Phillip M. Feldman
答案 0 :(得分:2)
我知道这有点晚了但我遇到了类似的问题并希望它可能仍然与某人有关。
您可以根据数组的大小将参数设置为数组和查询:
alias testing 'set args_=(\!*); if ($#args_ > 0) echo "this command has $#args_ arguments" endif'
答案 1 :(得分:1)
tcsh中的别名有限;对于更高级的东西,我发现最好的方法是source
a(t)csh脚本,如下所示:
alias my-cmd 'source ~/.tcsh/my-cmd.tcsh'
而~/.tcsh/my-cmd.tcsh
将包含以下内容:
if ( $1 != '' ) then
echo "we have an argument: $1"
else
echo "we don't have an argument"
endif
示例输出:
% my-cmd
we don't have an argument
% my-cmd hello
we have an argument: hello
现在,也可以只使用别名来实现这一点,但这将更加可维护。从长远来看,清洁工,恕我直言。
(我假设tcsh在这里几乎所有,或者甚至所有,c shell现在都是tcsh。)
答案 2 :(得分:0)
容易做 - 抱歉,我迟到了。
alias iftest'if(\ !: 0!= \!:$)echo“Last arg =”\!:$; if(\ !: 0 == \!:$)echo“No args given。” “
这只是检查第0个参数(='iftest'本身)和最后一个参数是否相同,如果是,则假定没有参数。当然,这不一定是真的,但希望能在实践中发挥作用。