检查传递给Bash脚本的参数数量

981
我希望我的Bash脚本在必要的参数数量不足时打印错误消息。
我尝试了以下代码: ```bash if [ "$#" -ne 2 ]; then echo "Error: Invalid number of arguments." fi ```
#!/bin/bash
echo Script name: $0
echo $# arguments 
if [$# -ne 1]; 
    then echo "illegal number of parameters"
fi

因为某种未知的原因,我遇到了以下错误:

test: line 4: [2: command not found

我做错了什么?


75
你不应该把你的脚本命名为“test”。那是一个标准的Unix命令名称,你不想掩盖它。 - Barmar
28
在Bash中,if语句中的'['('[[')和'('('((')两侧应使用空格。 - zoska
6
补充一下 @zoska 的评论,你需要在 [ 前面加一个空格,因为它被实现为一个命令,尝试使用 'which ['。 - Daniel Da Cunha
1
以下是关于编程的内容,翻译成中文:请查看下面链接中提供的更好的示例:https://dev59.com/Y2855IYBdhLWcg3wcz1h - ramkrishna
4
只要不在路径上,把它命名为 test 应该是可以的,对吧,@Barmar? - user253751
显示剩余4条评论
11个回答

-1

你应该在测试条件之间添加空格:

if [ $# -ne 1 ]; 
    then echo "illegal number of parameters"
fi

希望这能有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接