Расширение переменной сценария оболочки с помощью escape
Следующий скрипт:
#!/bin/bash
nested_func() {
echo $1
echo $2
}
func() {
echo $1
nested_func $2
}
func 1 "2 '3.1 3.2'"
Выходы:
1
2
'3.1
Что я хотел бы получить в качестве вывода:
1
2
3.1 3.2
Как мне добиться этого выхода с одним параметром на func
вместо многих?
РЕДАКТИРОВАТЬ для упрощения
2 ответа
Решение
Вы можете попробовать это:
#!/bin/bash
nested_func() {
echo "$1"
echo "$2"
}
func() {
nested_func "$@"
}
func 1 '2.1 2.2'
$@
представляют все позиционные параметры, заданные функции
В качестве альтернативы вы можете использовать это:
#!/bin/bash
nested_func() {
echo "$1"
echo "$2"
}
func() {
echo "$1"
shift
nested_func "$@"
}
func 1 2 '3.1 3.2'
shift
Ключевое слово позволяет пропустить первый параметр.
Вы можете легко отобразить это, если у вас есть 4 параметра...
У меня есть ожидаемый результат с этим:
#!/bin/bash
nested_func() {
echo $1
echo $2
}
func() {
echo $1
nested_func ${2%% *} "${2#* }"
}
func 1 "2 3.1 3.2"
Использование расширения параметров