我需要检查输入参数的存在。我有以下脚本

if [ "$1" -gt "-1" ]
  then echo hi
fi

我明白了

[: : integer expression expected

如何首先检查输入参数1以查看它是否存在?


当前回答

我经常将这段代码用于简单的脚本:

#!/bin/bash

if [ -z "$1" ]; then
    echo -e "\nPlease call '$0 <argument>' to run this command!\n"
    exit 1
fi

其他回答

只是因为有更多的基点需要指出,所以我补充说,您可以简单地测试字符串是否为空:

if [ "$1" ]; then
  echo yes
else
  echo no
fi

同样,如果您期望arg计数,只需测试最后一个:

if [ "$3" ]; then
  echo has args correct or not
else
  echo fixme
fi

以此类推,使用任何arg或var

更现代

#!/usr/bin/env bash

if [[ $# -gt 0 ]]
  then echo Arguments were provided.
  else echo No arguments were provided.
fi

作为一个小提示,Bash中的数字测试运算符只对整数(-eq、-lt、-ge等)有效

我希望通过以下方式确保我的$vars为int

var=$(( var + 0 ))

在我测试它们之前,只是为了防御“[:integer arg required”错误。

在我的情况下(有7个参数),唯一有效的解决方案是检查最后一个参数是否存在:

if [[ "$7" == '' ]] ; then
  echo "error"
  exit
fi

Try:

 #!/bin/bash
 if [ "$#" -eq  "0" ]
   then
     echo "No arguments supplied"
 else
     echo "Hello world"
 fi