Bash脚本错误[:!=:一元运算符预期

use*_*240 79 bash

在我的脚本中,我试图错误检查第一个和唯一的参数是否等于-v但它是一个可选参数.我使用if语句,但我一直得到一元运算符预期的错误.

这是代码:

if [ $1 != -v ]; then
   echo "usage: $0 [-v]"
   exit
fi
Run Code Online (Sandbox Code Playgroud)

编辑:

我应该更具体一点:上面脚本的这一部分是检查一个可选参数然后,如果没有输入参数,它应该运行程序的其余部分.

#!/bin/bash

if [ "$#" -gt "1" ]; then
   echo "usage: $0 [-v]"
   exit
fi

if [ "$1" != -v ]; then
   echo "usage: $0 [-v]"
   exit
fi

if [ "$1" = -v ]; then
   echo "`ps -ef | grep -v '\['`"
else
   echo "`ps -ef | grep '\[' | grep root`"
fi
Run Code Online (Sandbox Code Playgroud)

Cha*_*ffy 163

行情!

if [ "$1" != -v ]; then
Run Code Online (Sandbox Code Playgroud)

否则,当$1完全为空时,您的测试将变为:

[ != -v ]
Run Code Online (Sandbox Code Playgroud)

代替

[ "" != -v ]
Run Code Online (Sandbox Code Playgroud)

......并且!=不是一元运算符(也就是说,只能使用一个参数).

  • 或者,如果您不关心可移植性,可以使用双括号,其中不需要引用变量扩展:`if [[$ 1!= -v]]; then` (8认同)