检查BASH中多个传递参数的文件输入

时间:2015-04-21 08:02:07

标签: bash shell

我希望能够在代码执行之前搜索传递的参数,并根据输入的类型(例如文件)分配不同的变量名称。

如果我键入:

,我的程序可以正常工作
./program input.txt -a

但是当我输入时:

./program -a input.txt

我的程序失败了。

它失败了,因为我的第一行代码是:

FILE=$1

并且-a不是文件,所以我怎么能'跳过'这个,然后转到下一个传递的参数并检查它是否是文件?

感谢任何帮助,谢谢你提前。 :)

1 个答案:

答案 0 :(得分:0)

嗯,你可以用这个轻松管理它:

if [[ "$1" =~ ^-a$ ]]; then
    flag_a=1 # variable flag_a stores a -a was issued on arguments
    shift # $2 is now $1
fi

另一方面,你可以使用更优雅的bash的getopts:http://wiki.bash-hackers.org/howto/getopts_tutorial