|
|||||||
bash скрипт с поддержкой длинных (gnu-style) опций
Время создания: 11.12.2011 17:12
Текстовые метки: bash, getopts, getopts_long, shell scripting
Раздел: OS tools - Linux - Bash
Запись: YellowRaven/myTetra_repo/master/base/1323609140iafdcy0tyk/text.html на raw.github.com
|
|||||||
|
|||||||
bash скрипт с поддержкой длинных (gnu-style) опций Предстала на первый взгляд тривиальная задача: написать скрипт с различными опциями при запуске. Допустим нужно обработать всего две опции: name и dir. И задача действительно тривиальна при условии, что опции у нас короткие. Но если есть жгучее желание использовать длинные опции, то пиши пропало: getopts, который планировалось использовать изначально, в bash совсем на это не годится. #!/bin/ksh while getopts "f(file):s(server):" flag do echo "$flag" $OPTIND $OPTARG done
#!/bin/bash while true; do case "$1" in -n | --name ) echo NAME="$2"; shift 2;; -d | --dir ) echo DIR="$2"; shift 2;; esac done
#!/bin/bash while getopts ":n:d:-:" OPTION; do case "$OPTION" in -) case "$OPTARG" in name) echo LONG_NAME="${!OPTIND}";; dir) echo LONG_DIR="${!OPTIND}" ;; esac;; n) echo SHORT_NAME="$OPTARG" ;; d) echo SHORT_DIR="$OPTARG" ;; esac done
#!/bin/bash . getopts_long while getopts_long :d:n::vh opt \ name required_argument \ dir required_argument \ help 0 "" "$@" do case "$opt" in n|name) echo NAME="$OPTLARG";; d|dir) echo DIR="$OPTLARG";; help 0 "" "$@" esac done
#!/bin/bash . ./shflags DEFINE_string 'name' 'world' 'comment for name' 'n' DEFINE_string 'dir' 'dir' 'comment for dir' 'd' FLAGS "$@" || exit 1 eval set -- "${FLAGS_ARGV}" echo "Name is ${FLAGS_name} and dir is ${FLAGS_dir}"
|
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|