Bash:使用getops进行此特定用途

时间:2016-03-16 09:18:18

标签: linux bash shell

我需要使用

来使用我的bash脚本
  

没有参数

./script.sh
  

路径参数(经典参数,将保存为var到var = $ 1)

./script.sh /root/home/dir/
  

使用switch -a(带有自己的参数)

./script.sh -a picture.jpeg
  

或两者合并

./script.sh -a picture.jpeg /root/home/dir/

我有这样的事情:

while getopts ":a:" opt; do
  case $opt in
    a)
      I_ARGUMENT=$OPTARG
      echo "A ARGUMENT IS: $OPTARG"
      ;;
    :)
      echo "-a requires argument"
      ;;          
  esac
done

然后对于路径参数这样的事情:

if [ -z "$1" ]
then
    :
else
PATH="$1"
fi

这显然不能很好地(完全没有效果)在一起。你能帮我把这两件事结合起来吗?谢谢。

1 个答案:

答案 0 :(得分:2)

这样的事情

pathToHomeSlashDir=~/dir/ #default value will be home/dir/
if [ $# -gt 0 ]
then
    while [ $# -gt 0 ]
    do
        case "$1" in
            -a)
                if [ $# -gt 1 ]
                then
                    image="$2"
                    shift
                else
                    echo "Please insert -a argument"
                    exit
                fi
                ;;
            *)
                pathToHomeSlashDir="$1"
                ;;
        esac
        shift
    done
fi

您只需要处理变量