Я думаю, что этот код должен сделать то, что Вы хотите:
#!/bin/bash
unset username
unset password
echo -n "username:"
read username
prompt="password:"
while IFS= read -p "$prompt" -r -s -n 1 char
do
if [[ $char == $'\0' ]]
then
break
fi
prompt='*'
password+="$char"
done
Вероятно, самый легкий путь состоял бы в том, чтобы использовать псевдоним оболочки (добавьте его к ~/.bashrc
или эквивалент Вашей оболочки):
alias awktab="awk -v FS='\t' -v OFS='\t' -v ORS='\t'"
Вы могли также добавить ярлык на него. Например, чтобы иметь Ctrl+G вставляют awk -v FS='\t' -v OFS='\t' -v ORS='\t'
в Ваш терминал добавьте эту строку к Вашему ~/.inputrc
:
Control-G: "awk -v FS='\t' -v OFS='\t' -v ORS='\t'"
Затем откройте новый терминал, введите Ctrl+G и престо!
Так как POSIX определяет, каковы значения по умолчанию специальных переменных, простая опция состоит в том, чтобы переопределить их во времени выполнения (не - простая опция быть для изменения источника).
В случае gawk
можно поместить общий код (обычно в BEGIN {}
блоки) в файле библиотеки. Если Вы помещаете их в путь к библиотеке по умолчанию (вероятно, /usr/share/awk/
или /usr/local/share/awk
), или где переменная среды AWKPATH
точки к, Вы не должны использовать полный путь:
gawk -f tabfile.awk [...]
В отличие от другого awks, gawk
позволяет нескольким -f
опции, и позволяют Вам смешивать обоих -f
и источник программы на командной строке.
Последние версии поддерживают дополнительное -i
включайте опцию файла (так как таращат глаза 4.1.0), и @include
директива (начиная с 4.0.x AFAICT). Это - немного больше устойчивой и дружественной версии -f
:
gawk '@include "tabfile"; /foo/ { ... }'
Вышеупомянутое будет включать tabfile.awk
от AWKPATH
или путь к библиотеке по умолчанию. @include
поддерживался в течение долгого времени, но через igawk
обертка сценария оболочки к gawk
, это - функция простофили, надлежащей теперь.
Это совместимо с другими двумя прекрасными ответами, например:
alias awktab="gawk -i tabfile"
Существует одно тонкое другое между использованием этого подхода файла библиотеки и использованием -v
на командной строке: параметр командной строки вступает в силу, прежде чем любой код awk выполняется, таким образом, они установлены к тому времени, когда код библиотеки выполняется. Это может иметь значение, использует ли код библиотеки такие переменные (например, чтение файлов данных).