Я нашел решение этой проблемы. Как вы упомянули steeldriver, это синтаксически правильно, но я внес изменения в оператор в предложении.
#/bin/bash
description="Advert"
if [[ $description =~ "Design" ]] || [[ $description =~ "Digital" ]]; then
echo 'Matches Design or Digital'
else
echo 'Does not match'
fi
Всем спасибо за советы!
Сохраните это в своем ~/.bashrc
файле
good_history(){
exit_status=$?
if ((!exit_status)); then
history 1 >> history.txt
fi
}
export PROMPT_COMMAND="good_history"
После этого источника ~/.bashrc
запуститеsource ~/.bashrc
Приведенная выше конструкция является определением функции,function_name() { command_goes_here; }
В файл сохраняются только те команды, которые завершились с помощью 0
.history.txt
Что касается оболочки, статус выхода 0
является успешным, а остальные — неудачными.
Встроенная переменная $?
содержит последний статус выхода последней выполненной команды, интерактивной или нет.
В математическом контексте использование bash 0
является ошибкой, а 1
— успехом при использовании (( ))
, поэтому мы отрицаем использование символа bang !
, см.help test
>>
добавляется туда, куда указывает этот объект, в данном случае к файлу.
См. раздел руководства bash о переменной PROMPT_COMMAND
попробуйте запустить ее в сеансе оболочкиPAGER='less +/^[[:space:]]*PROMPT_COMMAND' man bash
Вам может понадобиться или не понадобиться файл export
, но я не уверен, какие настройки у вас есть в ваших файлах shellrc
, поэтому он там есть.
zsh