2

我需要检查第一个命令行参数以查看它是否为-cleanup. 我的代码是:

if ( $* != null ) then

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

我首先检查以确保至少有 1 个参数。 n设置为1在程序的开头。当我尝试使用-cleanup作为参数运行脚本时,出现此错误:

if: Malformed file inquiry.

我从网上找到的几个论坛帖子中尝试了解决方案,但我无法弄清楚如何正确处理破折号。这是一个 tcsh 外壳。

4

1 回答 1

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
于 2013-03-04T03:24:26.060 回答