Ваша конфигурация chkconfig
будет работать, если вы shutdown
используете свой экземпляр.
Я создал тестовый сценарий на своем компьютере, и он работает, если я выключаю экземпляр, и не работает, когда я перезапускаю его.
$@
— это массив, назначьте его массиву:
args=("$@")
Затем используйте его как массив:
elif [[ $commit == true ]]; then
git commit "${args[@]}"
elif [[ $checkout == true ]]; then
git checkout "${args[@]}"
else
В вашем текущем коде происходит то, что все ваши отдельные аргументы сохраняются как одна строка. Итак, если вы позвоните:
bc -a "foo bar"
Присваивается args
как:
args='-a foo bar'
Тогда вместо выполнения:
git commit -a "foo bar"
Вы получаете:
git commit '-a foo bar'
Поскольку другой ответ не POSIX, вот альтернатива. Если вы хотите раздавить аргументы позиции временно, вы можете сделать что-то вроде этого:
s1=$(printf '%s\n' "$@")
затем, когда вы будете готовы к восстановлению, сделайте следующее:
IFS='
'
set -- $s1
Обратите внимание, что это предполагает, что аргументы не содержат символы новой строки. Если они это сделают, другой необходимо использовать разделитель.
Примечание. :Если вы заметили, последняя строка содержит переменную без кавычек. Это один из немногих случаев (и, на мой взгляд, единственный случай ), где это приемлемо иметь переменные без кавычек :, где пользователь явно установил IFS
. Пользователь по сути говорит: «Да, я знаю, что делаю, пожалуйста, продолжайте».