Можно ли определить сценарий bash для интерактивного запуска по умолчанию?

Ожидаются образцы исходных файлов, думаю, это должно сработать:

gawk '($1=="Count"){print "Count = " (++i); next;} 1' /tmp/rand_file1

Краткое пояснение:

  • в строках, имеющих Countв качестве первого поля :напечатать новый оператор подсчета и увеличить число. ++iначнется с 1, i++начнется с 0. В этом случае также пропустите оставшуюся часть обработки и перейдите к строке ввода next.

  • для всех строк(1):выполнить действие по умолчанию, то есть распечатать строку ввода.

Это должно быть быстрее, так как оно затрагивает каждую строку ввода только один раз, в вашем существующем решении совпадение для Countкопирует весь файл.

6
24.02.2020, 19:05
2 ответа

Если вы добавите параметр -iк вашему хеш-бангу (s ), он укажет, что скрипт работает в интерактивном режиме.

#!/bin/bash -i

В качестве альтернативы вы можете вызывать скрипты с этой опцией:

bash -i /path/to/script.sh
4
28.04.2021, 23:22

Поиск вашего .bashrcне является хорошей идеей. Вы можете создать файл .bash_aliasс вашим псевдонимом, а затем использовать этот файл в своем скрипте и использоватьshopt

что-то вроде:

shopt -s expand_aliases
source ~/.bash_alias

Информация на справочной странице Bash:

Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the descrip‐ tion of shopt under SHELL BUILTIN COMMANDS below).

8
28.04.2021, 23:22

Теги

Похожие вопросы