【发布时间】:2014-03-04 17:55:47
【问题描述】:
在我的脚本中,我试图错误检查第一个也是唯一一个参数是否等于-v,但它是一个可选参数。我使用 if 语句,但我不断收到一元运算符预期的错误。
这是代码:
if [ $1 != -v ]; then
echo "usage: $0 [-v]"
exit
fi
更具体:
上面的这部分脚本正在检查一个可选参数,然后,如果没有输入参数,它应该运行程序的其余部分。
#!/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
【问题讨论】:
-
...顺便说一句,我想你想要
echo "usage: $0 [-v]";$-显示活动的 shell 选项标志,而不是当前脚本的名称。 -
我的那部分是对的,我希望它显示当前脚本的名称。
-
欢迎来到 stackoverflow,尤其是 bash 标签!查看tag wiki 以获取有用的工具和资源,例如shellcheck,它将指出(尽管并不总是解释)许多类似的问题。
-
@user3380240,
$-不是当前脚本的名称。$0是。 -
抱歉,打错了。
标签: bash