Это можно сделать с помощью команды exit
. Из man bash
:
exit [n]
Заставить оболочку выйти со статусом n. Если n опущено, статус выхода соответствует статусу последней выполненной команды. Ловушка на EXIT выполняется до завершения работы оболочки.
if grep -q 'pattern' '/path/to/file'
then
echo "found"
else
echo "not found"
exit
fi
Примечание: Точка с запятой в конце первой строки не нужна, если только вы не размещаете дополнительные команды в той же строке, например,
if grep -q 'pattern' '/path/to/file'; then
echo "found"
else
echo "not found"
exit
fi
Как оказалось, без моего ведома было глобальное сочетание клавиш, сопоставленное с >
, которое не работало, и поэтому я получал это сообщение об ошибке. Пришлось отредактировать ярлыки и снять.
Я вижу, что вы разрешили свою конкретную ситуацию, но частичным решением вашего общего вопроса является ввод
printf "\076\n" | tee gt
Это создаст файл под названием gt
, который содержит >
(символ больше-чем)
и новую строку (а также отобразит эти символы на экране).
Затем вы можете прочитать этот файл в файле исходного кода, скопировать и вставить.
Вы можете использовать аналогичную технику, чтобы компенсировать Недоступность клавиш > при вводе команд оболочки. Если вы хотите выполнить команду и перенаправить ее вывод в файл, например,
date > current_time
просто do
date | tee current_time
Если вам не нравится, что вывод выводится на экран (в дополнение к тому, что он попадает в файл), определите эту функцию
write_to()
{
if [ "$#" = 0 ]
then
echo "Usage: write_to file ..."
return
fi
tee "$@" > /dev/null
}
в ~/.bashrc
или где-нибудь еще.
Она позволяет вам набирать такие вещи, как
date | write_to current_time
ps | write_to file1 file2
Чтобы получить эффект >>
, напишите функцию append_to
, которая использует tee -a
.
И, возвращаясь к моей самой первой команде:
если по какой-то причине команда printf
недоступна, вы можете сделать
echo a | tr a "\076" | tee gt