tcsh - 以短划线( - )开头的命令行参数

时间:2013-03-04 02:44:30

标签: shell unix tcsh

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

if ( $* != null ) then

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

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

if: Malformed file inquiry.

我尝试过在网上找到的几篇论坛帖子中的解决方案,但我无法弄清楚如何正确处理短划线。这是一个tcsh shell。

1 个答案:

答案 0 :(得分: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