LINUX.ORG.RU

История изменений

Исправление 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