如何在bash脚本中使用命令行参数读取内联参数?

时间:2016-04-01 06:49:56

标签: bash

我有一个bash script,其中command line argsfilename为内联参数。我无法读取内联参数。

sh test.sh -a a -b b -c c < pwd.txt

test.sh

if [ $# = 0 ] 
then
    echo $USAGE >&2
    exit $STATUS_ERROR_FAIL
fi

# Parse command line options.
while getopts a:b:c: OPT; 
do
case "$OPT" in
a)
    a="$OPTARG"
    ;;
b)
    b="$OPTARG"
    ;;
c)
    c="$OPTARG"
    ;;
\?)
    # getopts issues an error message
    echo $USAGE 
    exit $STATUS_ERROR_FAIL
    ;;
esac
done

shift $((OPTIND-1))
echo "1=$1"

1 个答案:

答案 0 :(得分:0)

你的脚本运行正常,你的错误是

echo "1=$1"

如果您想查看参数,请在echo/print

中添加case
#!/bin/bash

if [ $# = 0 ]
then
    echo $USAGE >&2
    exit $STATUS_ERROR_FAIL
fi


# Parse command line options.
while getopts a:b:c: OPT;
do
case "$OPT" in
a)
    a="${OPTARG}"
        echo "a[$a]"
    ;;
b)
    b="${OPTARG}"
        echo "b[$b]"
    ;;
c)
    c="${OPTARG}"
        echo "c[$c]"
    ;;
\?)
    # getopts issues an error message
    echo $USAGE
    exit $STATUS_ERROR_FAIL
    ;;
esac
done

shift $((OPTIND-1))

或 您可以在脚本末尾添加echo/print ..它取决于您的需求

输出

[shell] ➤ ./t -a 1 -b 2 -c 3
a[1]
b[2]
c[3]

此致

克劳迪奥