shell脚本:期望的整数表达式

0 bash shell

#!/bin/bash
if [$# -ne 1];
then
  echo "/root/script.sh a|b"
else if [$1 ='a'];
then
  echo "b"
else if [$1 ='b']; then
  echo "a"
else 
  echo "/root/script.sh a|b"
fi
Run Code Online (Sandbox Code Playgroud)

我在Linux上运行脚本时遇到错误.

bar.sh: line 2: [: S#: integer expression expected
a
Run Code Online (Sandbox Code Playgroud)

你能帮忙删除这个错误吗?

Ray*_*yne 5

if [$# -ne 1];
Run Code Online (Sandbox Code Playgroud)

[]要求间距.例:

if [ $# -ne 1 ];
Run Code Online (Sandbox Code Playgroud)

else if应该是elif

#!/bin/bash
if [ "$#" -ne 1 ];
then
  echo "/root/script.sh a|b"
elif [ "$1" ='a' ];
then
  echo "b"
elif [ "$1" ='b' ]; then
  echo "a"
else
  echo "/root/script.sh a|b"
fi
Run Code Online (Sandbox Code Playgroud)

不要忘记引用变量.它不是每次都必要,但建议.

问题:为什么我有-1?