如何使用getopts处理多个输入文件参数

时间:2014-04-29 09:02:35

标签: bash arguments getopts

我试图为多个输入数据文件制作脚本。什么是最好的方法,如何处理这些论点?脚本的用法应该是:

./script.sh -a sth -b sth - c sth -d sth input1 input2 input3    

我可以使用getopts处理参数和参数,但我不知道如何处理这些输入文件,因为它们没有标志。 感谢

1 个答案:

答案 0 :(得分:4)

while getopts ":a:b:c:d:" opt; do
  case "$opt" in
    a) i=$OPTARG ;;
    b) j=$OPTARG ;;
    c) k=$OPTARG ;;
    d) l=$OPTARG ;;
  esac
done
shift $(( OPTIND - 1 ))


for file in "$@"; do
  # your stuff here
done

请试试这个,这可能会解决你的目的

我自己的评论促使我延伸答案:

如果您只想从getopts 执行 您必须将脚本称为

./script -a hj -b op -c zx -d some -f "File in list seperated with spaces"

while getopts ":a:b:c:d:f:" opt; do
  case "$opt" in
    a) i=$OPTARG ;;
    b) j=$OPTARG ;;
    c) k=$OPTARG ;;
    d) l=$OPTARG ;;
    f) files=$OPTARG ;;
  esac
done
                      #no shift is required now, since we have file list in $files
for file in $files; do
  # your stuff here
done