2013-03-04 111 views
1

我需要检查第一个命令行参数以查看它是否为-cleanup。我的代码是:tcsh - 以短划线( - )开头的命令行参数

if ($* != null) then 

if ("X$argv[$n]" == "X-cleanup") then 
    echo "its cleanup" 

我第一次检查,以确保至少有1说法。 n在程序开始时设置为1。当我尝试用-cleanup运行我的脚本作为参数,我得到这个错误:

if: Malformed file inquiry. 

我试着从几个论坛帖子我在网上找到解决方案,但我想不出如何正确处理的冲刺。这是一个tcsh shell。

回答

2

这个脚本片段为我工作:

set n = 1 
echo $argv[$n] 
if ("$argv[$n]" == "-cleanup") then 
    echo "its cleanup" 
endif 

当我运行tcsh ./test-cleanup.tcsh -cleanup产生以下输出:

-cleanup 
its cleanup 

有问题的一段代码是下面一行。当-cleanup未被引用时,它将csh解释器混淆为文件检查。

if ($* != null) then 

这一行替换它:

if ("$*" != "") then 
+0

是的,这工作。我专注于错误的陈述! ty – user1754045 2013-03-04 04:07:44

+0

我看到这个问题也与“-run”种类的argv [1]有关。我的解决方案不同,但解决了同样的问题。我的解决方案是比较这种方式: ... if($ argv [1]:q ==“-run”)... – macetw 2015-02-23 12:58:28