Практическое написание сценариев командной оболочки Bash/Bash подстановки: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 232:
# Результат: "one two"
</source>
 
Вы уже наверное догадались, что результат подстановки должен быть верным в контексте, в который он подставляется. Команда в подстановке может быть сложной, в том числе, это может быть целая процедура.
<source lang=bash>
#!/bin/bash
 
declare -ar SUBCOMMANDS=("algo1" "algo2" "algo3")
 
# В этом примере мы формируем описание одной из опций гипотетической утилиты в функции <code>usage()</code>.
usage() {
printf "
$0 Some utility.
 
Options:
-r $(
for s in ${SUBCOMMANDS[*]}; do printf "$s|"; done
)
<${SUBCOMMANDS[0]}>
Description of the algorithm 1
<${SUBCOMMANDS[1]}>
Description of the algorithm 1
<${SUBCOMMANDS[2]}>
Description of the algorithm 1
 
"
}
usage
# Вывод:
#
# ./dummy.sh Some utility.
#
# Options:
# -r algo1|algo2|algo3|
# <algo1>
# Description of the algorithm 1
# <algo2>
# Description of the algorithm 1
# <algo3>
# Description of the algorithm 1
#
</source>
 
Из-за плохой производительности вложенных конструкций, их следует использовать для фрагментов кода, которые вызываются относительно редко.
 
== Подстановка результата из подоболочки через автоматический файл ==