Выполните правильный синтаксический анализ командной строки, а затем выберите способ фактического пробного запуска.
Разбор командной строки:
#!/bin/sh
dry_run=false
while getopts 'n' opt; do
case "$opt" in
n) dry_run=true ;;
*) echo 'error in command line parsing' >&2
exit 1
esac
done
Теперь $dry_run
будет true
, если пользователь вызвал сценарий с параметром командной строки -n
.
Затем выберите способ выполнения пробного запуска. Простым способом было бы использоватьset -v
(отображать команды по мере их чтения оболочкой ), а затемset -n
(фактически не запускать ничего):
if "$dry_run"; then
set -v
set -n
fi
Возможно, это не то, что вам нужно, так как это просто отобразит скрипт.
Вместо этого вы можете
if "$dry_run"; then
cmd=echo
else
cmd=''
fi
, а затем добавьте префикс к конкретным командам, которые вы хотите запустить в пробном режиме, с$cmd
:
$cmd ls -l
$cmd echo "hello world"
Если вы запустите эту команду:
open -a Finder ~/Library/Preferences/com.apple.Terminal.plist
Вы увидите вкладку CommandHistory, где можно удалить записи.
Если com.apple.Terminal.plist отсутствует в указанном выше пути, вы можете выполнить поиск по:
find ~ -name com.apple.Terminal.plist