我正在尝试执行以下 shell 脚本
#!/bin/csh
if [[ $# != 1 || $1 != "first" && $1 != "second" ]]
then
echo "Error: Usage: $0 [first|second]"
exit 1
fi
但我收到一个错误:
if:表达式语法。
我不知道这种语法有什么问题。我觉得很好。请帮忙。
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
如果你使用 C-shell 你应该写
#!/bin/csh
if( $# != 1 || $1 != "first" && $1 != "second" ) then
echo "Error: Usage: $0 [first|second]"
exit 1
endif
您的版本适用于类似 Bourne 的 shell sh
,例如bash
等。