1
我有一個shell腳本,我在解析命令行參數。我的論據中有道路。 例如:mycript.sh -c test -s global -n /mydir/test1 -d /orgdir/test35
當我運行腳本並回顯包含路徑的參數(特殊字符「/」)時,它給了我空路徑。這個回聲在shell腳本中的命令行解析
#/!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 []
誰能告訴我,什麼是不正確嗎?
它不是你的問題的直接解決方案,但我建議你看看[docopt](https://github.com/docopt/docopts)這是一個可移植的(跨語言)的方式來解析參數。 – zmo
儘管docopt仍然是第三方解決方案。 'getopts'是'bash'的一部分,因此完全可移植(無論如何,假設'bash'可用)。 – chepner