0

我正在尝试执行以下 shell 脚本

#!/bin/csh
if [[ $# != 1  ||  $1 != "first" && $1 != "second" ]]
then
    echo "Error: Usage: $0 [first|second]"
    exit 1
fi

但我收到一个错误:

if:表达式语法。

我不知道这种语法有什么问题。我觉得很好。请帮忙。

4

2 回答 2

1

C shell (csh) 没有变量$#. 事实上,在 csh 中,参数传递、if语句等与 ksh 或 bash 根本不同。您的所有代码看起来都像 bash 代码,但您的 shebang 行包含csh. 因此,如果您想使用,请将bash其更改为:

#!/bin/bash
if [[ $# != 1  ||  $1 != "first" && $1 != "second" ]]
then
    echo "Error: Usage: $0 [first|second]"
    exit 1
fi

或者,如果您真的想使用,csh那么您已经将代码重写为:

#!/bin/csh
if ( $#argv != 1  ||  $1 != "first" && $1 != "second" ) then
    echo "Error: Usage: $0 [first|second]"
    exit 1
endif
于 2013-09-05T06:13:04.643 回答
0

如果你使用 C-shell 你应该写

#!/bin/csh
if( $# != 1  ||  $1 != "first" && $1 != "second" ) then
    echo "Error: Usage: $0 [first|second]"
    exit 1
endif

您的版本适用于类似 Bourne 的 shell sh,例如bash等。

于 2013-09-05T06:06:25.320 回答