为什么我从 Bash 脚本中收到“

为什么我从 Bash 脚本中收到“

我正在测试一个接受随机参数的 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 foundif $3is three。此外:

  • 引用你的变量;
  • [不明白>=、明白-ge等选项;
  • >=无论如何都是一个重定向,它没有到达命令,无论命令是否是[[three。您现在有一个名为=.

在 Bash 中[是内置的。看help [help test

相关内容