Я написал bash-скрипт, который принимает параметры по имени и считывает их значение в парах ключ-значение. Ниже приведен пример того, как я запускаю свой скрипт.
sh test.sh param1='a' param2='b'
Затем я ссылаюсь на входные аргументы, такие как $param1 и $param2, внутри своего скрипта. Ниже приведен сценарий, который я написал для этого.
for item in $@; do
case $item in
(*=*) eval $item;;
esac
done
Но когда в значении аргумента есть пробел, он принимает только часть перед пробелом.
param3='select * from'
назначит 'select' только для param3, а не для всей строки. Как я могу этого добиться? Любая помощь приветствуется.
РЕДАКТИРОВАТЬ :
После ответа Иниана
for item in $@; do
case "$item" in
(*=*) eval "$item";;
esac
done
param1='a' param2='b' sh test.sh
вместо этого? Это сделаетecho "$param1"
доступным сразу без разбора - person that other guy   schedule 10.01.2017