我正在尝试执行以下shell脚本
#!/bin/csh
if [[ $# != 1 || $1 != "first" && $1 != "second" ]]
then
echo "Error: Usage: $0 [first|second]"
exit 1
fi
但是我收到了一个错误:
if:Expression Syntax。
我不知道该语法有什么问题。它看起来很好。请帮忙。
答案 0 :(得分: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
答案 1 :(得分: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
等。