У меня есть сценарий bash, которому может быть передан ряд различных аргументов и переменных, которые будут использоваться самим сценарием. Некоторые параметры присваиваются переменным. секундный цикл while , по-видимому, не работает, когда программа пытается его выполнить. Я упростил следующий скрипт из соображений конфиденциальности / простоты.
./myscript --dir2 /new/path
while :; do
case $1 in
--var1) $var1=$2
;;
--var2) $var2=$2
;;
"") break
esac
shift
done
$dir1=/default/directory
$dir2=/default/directory
while :; do
case $1 in
--dir1) $dir1=$2
;;
--dir2) $dir2=$2
;;
"") break
esac
shift
done
echo "Expect /default/directory, returned: $dir1"
echo "Expect /new/path, returned: $dir2"
Вот то, что моя программа эффективно вернула бы.
Expected /default/directory, returned: /default/directory
Expected /new/path, returned: /default/directory
Есть ли лучший способ сделать это? Или другой способ перебора параметров, изначально переданных в сценарий? Спасибо за помощь!