我正在测试一个接受随机参数的 Bash 脚本,并注意到它会说类似的内容
./Var: line 19: [three: command not found
这是一个最小的工作示例:
#!/bin/bash
$1 $2 $3
echo "The first argument does $1"
if [$1 >= 2]; then
echo "$1 has 2 words"
else
echo "$1 has unknown amount of words"
fi
#^First
echo "The second argument does $2"
if [$2 >= 2]; then
echo "$2 has 2 words"
else
echo "$2 has unknown amount of words"
fi
#^Second
echo "The third argument does $3"
if [$3 >= 2]; then
echo "$3 has 2 words"
fi
#^Third
但它会继续运行脚本,有没有办法让它运行而不出现“命令未找到”?或者这只是我的代码中的一个问题导致它这样做?
答案1
您要使用的命令是[
(或test
),而不是[whatever
,所以应该是(例如)
[ "$3" -ge 2 ]
而不是[$3 >= 2]
,它生成[three: command not found
if $3
is three
。此外:
- 引用你的变量;
[
不明白>=
、明白-ge
等选项;>=
无论如何都是一个重定向,它没有到达命令,无论命令是否是[
或[three
。您现在有一个名为=
.
在 Bash 中[
是内置的。看help [
,help test
。