shell脚本中的命令行解析

时间:2014-02-26 10:43:40

标签: bash shell getopts

我有一个shell脚本,我正在解析命令行参数。我的论点有其中的道路。 示例:mycript.sh -c test -s global -n /mydir/test1 -d /orgdir/test35 当我运行脚本并回显包含路径(特殊字符“/”)的参数时,它给了我空路径。

#/!bin/bash
...

while getopts c:hs:n:d opt
do
case "$opt" in
c) INST=$OPTARG;;
d) INST_DIR=$OPTARG;;
h) usage;;
s) METHOD=$OPTARG;;
n) MAINTENANCE_DIR=$OPTARG;;
\?) usage;;
esac
done

echo INST dir is [$INST_DIR]
echo MAINTENANCE dir is [$MAINTENANCE_DIR]
.......

此回音的结果是

INST dir is []
MAINTENANCE dir is []

有人能说出这里有什么不对吗?

1 个答案:

答案 0 :(得分:2)

使用您的脚本,我得到了不同的结果:

INST dir is []
MAINTENANCE dir is [/mydir/test1]

我改变了你的剧本第4行:

while getopts c:h:s:n:d: opt

在Cygwin下,它适用于我,bash版本4.1.10(4) - 发布。