String 两个字符串的Bash比较

String 两个字符串的Bash比较,string,bash,if-statement,comparison,String,Bash,If Statement,Comparison,我现在可能有一个很大的逻辑思维障碍,我就是不明白。。我希望有人能帮助我 我正在编写一个包含参数的脚本,第一个参数必须是“激活”或“停用”,因此我写了以下内容: if [ "$1" != "activate" ] || [ "$1" != "deactivate" ]; then echo $1 exit 1 fi echo "Hello the first argument is $1" 因此,如果我现在运行“myscript.sh activate”,则输出为: user@hos

我现在可能有一个很大的逻辑思维障碍,我就是不明白。。我希望有人能帮助我

我正在编写一个包含参数的脚本,第一个参数必须是“激活”或“停用”,因此我写了以下内容:

if [ "$1" != "activate" ] || [ "$1" != "deactivate" ]; then
   echo $1
   exit 1
fi
echo "Hello the first argument is $1"
因此,如果我现在运行“myscript.sh activate”,则输出为:

user@host$ ./myscript.sh activate
activate
但是输出应该是“Hello,第一个参数是activate”

有人能解释一下我做错了什么或者我需要改变什么吗

谢谢

我建议使用:

if [ "$1" != "activate" ] && [ "$1" != "deactivate" ]; then
我建议使用:

if [ "$1" != "activate" ] && [ "$1" != "deactivate" ]; then

您的第一个参数“activate”肯定不等于“deactivate”。这使得第二个比较设置为true。请记住,您正在使用OR运算符。
[“$1”!=“deactivate”]
是正确的。是的,谢谢,我想我现在明白了:)我知道,我想这么做,但它说我需要等待几分钟,直到我能够接受您的答案。您的第一个参数“activate”肯定不等于“deactivate”。这使得第二个比较设置为true。请记住,您正在使用OR运算符。
[“$1”!=“deactivate”]
是正确的。是的,谢谢,我想我现在知道了:)我知道,我想这么做,但它说我需要等待几分钟,直到我能够接受您的答案。