关于Shell变量

时间:2010-06-09 06:22:12

标签: linux shell unix

我需要在主脚本中调用另一个shell脚本testarg.sh。此脚本testarg.sh具有参数ARG1,ARG2,ARG3。我需要打电话给以下方式:

./testarg.sh -ARG1 <value>  -ARG2 <value> -ARG3

ARG1和ARG3参数是强制性的。如果它没有传递给主脚本那么我就退出了。 ARG2是可选的。如果ARG2变量没有设置值或者没有定义,那么我不需要从主脚本传递它。所以我需要调出以下方式

./testarg.sh -ARG1 <VALUE1> -ARG3

如果ARG2变量的值存在,那么我需要调用以下方式:

./testarg.sh -ARG1 <VALUE1> -ARG2 <VALUE2> -ARG3

我是否需要使用if else语句来检查ARG2变量是空还是空?还有其他办法吗?


修订

如果设置了ARG2,则呼叫应为:

./testarg.sh -ARG1 -OPT2 $ARG2 -ARG3

2 个答案:

答案 0 :(得分:3)

如果是bash,你可以写

./testarg.sh -ARG1 $ARG1 ${ARG2:+-ARG2 $ARG2} -$ARG3

如果${param:+word}已设置,则构造word将评估为param,否则为空。因此,如果$ARG2有值,则会获得-ARG2 $ARG2,否则无效。

答案 1 :(得分:0)

#!/bin/sh

if [ "$1" = "" ]; then
    echo ARG1 is null
else
    echo ARG1 = $1
fi
if [ "$2" = "" ]; then
    echo ARG2 is null
else
    echo ARG2 = $2
fi