Советы по работе с Bash


ПРИМЕЧАНИЕ: Это живой документ, который будет обновляться в будущем!


### Полезные команды :

Недавно мне понадобился шаблон английского алфавита для проверки некоторых идей комбинаторики с использованием Regex, я сказал, что мне нужна строка от z до z, хотя, честно говоря, я не мог найти в Google как первое совпадение: не делайте этого, лучше воспользуйтесь возможностями интерактивной оболочки, я использую Git bash для Windows (вы можете использовать Bash/Dash по умолчанию для вашего e. например, Ubuntu/Debian соответственно), просто введите следующее, исключая # abcdefghijklmnopqrstuvwxyz, чтобы получить желаемый результат в соответствии с моим недавним намерением, т.е. получить буквы английского алфавита в порядке возрастания:

 printf "%s" {a..z} # abcdefghijklmnopqrstuvwxyz
Войти в полноэкранный режим Выйти из полноэкранного режима

# comment_syntax

### Позиционные параметры :

В зависимости от следующего сценария $0 позиционная переменная будет нацелена на :

Интерактивная оболочка (терминал) Неинтерактивная оболочка (файл)
/usr/bin/ /source_file[.sh]
set -- -a -b -c # initial condition
echo "$@" # -a -b -c
# to unset all positional parameters at once do the following :
shift N # N is a number starting from 1 for -a, 2 for -b, 3 for -c, etc. if let's say it's first i.e. 1 for -a the N could be omitted, otherwise must be stated e.g.:
shift 1 # same as just shift
echo "$@" # -b -c
# Where is one "BUT" shift commands removes positional parameters with behaviour of dynamic index rather than sparsed index – consider the initial condition i.e.:
set -- -a -b -c # initial condition
shift 2 # would remove -a & -b, not only -b as may be expected resulting not in -a -c, but in probably unexpected of -c only as number 2 would say remove first two of the $@ 
Вход в полноэкранный режим Выход из полноэкранного режима

Кто-то может дать мне более красноречивый пример (всегда пожалуйста, оставьте комментарий ниже), чтобы разделить позиционные параметры в середине, но пока я только начал изучать bash, я вижу, что это вполне сносное обходное решение для интерактивной оболочки, например:

# set -- -a -b -c # consider this was initial condition
# NOTE : consider we still on the same bash session
# just reset it with the following :
set -- -a -c
echo "$@" # -a -c 
# I do understand that if those are dozen of positional parameters, that might be an issue or if you want some more dynamic usage of, otherwise for me it does a job, least for now
Войти в полноэкранный режим Выход из полноэкранного режима

Скоро будет больше, следите за новостями! …

Оцените статью
devanswers.ru
Добавить комментарий