比较来自世界各地的卖家的域名和 IT 服务价格

如何在缺少命令行参数时避免语法错误?

如何在缺少命令行参数时避免语法错误?

示例shell脚本:

 var1=$1;
var2=$2;
echo $var1
echo $var2
var3=`expr $var1 + $var2`;
echo $var3

输出 :

shell>sh shelltest 2 3
2
3
5

输出 :

    shell>sh shelltest
expr: syntax error

由于不传输参数,因此我可以避免此并转移自己的消息。 «expr: syntax error»?
已邀请:

董宝中

赞同来自:

我通常使用参数披露“点如果 Null 或者 Unset», 确保指定了参数。 例如:

#!/bin/sh
var1="${1:?[Please specify the first number to add.]}"
var2="${2:?[Please specify the second number to add.]}"

那是什么:

% ./test.sh
./test.sh: 2: ./test.sh: 1: [Please specify the first number to add.]
% ./test.sh 1
./test.sh: 3: ./test.sh: 2: [Please specify the second number to add.]


http://manpages.ubuntu.com/man ... ttoc2
:

 ${parameter:?[word]}  Indicate Error if Null or Unset.  If parameter is
unset or null, the expansion of word (or a message
indicating it is unset if word is omitted) is
written to standard error and the shell exits with
a nonzero exit status. Otherwise, the value of
parameter is substituted. An interactive shell
need not exit.

郭文康

赞同来自:

您可以使用shell脚本中的缺失参数使用

$#

多变的。

例如:

#!/bin/bash
#The following line will print no of argument provided to script
#echo $#
USAGE="$0 --arg1<arg1> --arg2<arg2>"

if [ "$#" -lt "4" ]
then
echo -e $USAGE;
else
var1=$2;
var2=$4;
echo `expr $var1 + $var2`;
fi

</arg2></arg1>

要回复问题请先登录注册