История изменений
Исправление kaldeon, (текущая версия) :
Как
Не заметил этого слова. Вместо ответа проще привести пример:
; touch test
; chmod +x test
; cat >test <<'EOF'
#!/bin/bash
option=''
args=()
while [[ $# -gt 0 ]]; do case "$1" in
-o)
option="$2"
shift 2
;;
-*)
echo 1>&2 unexpected option: "$1"
exit 1
;;
*)
args=("$@")
shift $#
;;
esac done
echo option: "${#option}" "$option"
echo args: "${#args[@]}" "${args[@]}"
EOF
; ./test -o hello foo bar
option: 5 hello
args: 2 foo bar
; ./test -o 'hello world' foo bar
option: 11 hello world
args: 2 foo bar
Исправление kaldeon, :
Как
Не заметил этого слова. Вместо ответа проще привести пример:
; touch test
; chmod +x test
; cat >test <<'EOF'
#!/bin/bash
option=''
args=()
while [[ $# -gt 0 ]]; do case "$1" in
-o)
option="$2"
shift 2
;;
-*)
echo 1>&2 unexpected option: "$1"
exit 1
;;
*)
args=("$@")
shift $#
;;
esac done
echo "${#option}" "$option"
EOF
; ./test -o hello
5 hello
; ./test -o 'hello world'
11 hello world
; rm test
Исходная версия kaldeon, :
Как
Не заметил этого слова. Вместо ответа проще привести пример:
; touch test
; chmod +x test
; cat >test <<'EOF'
#!/bin/bash
while [[ $# -gt 0 ]]; do case "$1" in
-a)
arg="$2"
shift 2
;;
*)
echo 1>&2 unexpected argument: "$1"
exit 1
;;
esac done
echo "${#arg}" "$arg"
EOF
; ./test -a hello
5 hello
; ./test -a 'hello world'
11 hello world
; rm test