Как смонтировать `D:\` диск Windows в linux mint? [закрыто]

Вы можете вытащить имена из-под заголовка с помощью, скажем, awk, и поместить их в переменную array , а затем выполнить итерацию по массиву с помощью для . Сценарий здесь берет шаблон из командной строки.

#!/bin/bash
patt=$1
if [ -z "$patt" ] ; then echo "need an argument" ; exit 1 ; fi
A=( $(awk '/^\[/ {p = 0};
           /^\['"$patt"'\]/ {p=1; next}
           p && !/^ *$/ ;' < servers )  )

for x in "${A[@]}" ; do 
    echo doing something with "$x" 
done

Итак,

$ bash for_all.sh alternate_server_list
doing something with Jupiter
doing something with Saturn

В программе awk :
/ ^ \ [/ {p = 0} - установить p равным нулю, если открытая скобка является первым символом в строка,
/ ^ \ ['"$ patt"' \] / {p = 1; next} - если мы соответствуем шаблону, установите p равным единице и переходите к следующей строке. Обратите внимание, что шаблон передается awk из переменной оболочки, поэтому он будет принят как регулярное выражение. Кавычки немного забавны, потому что часть кода заключена в одинарные кавычки, затем переменная в двойных кавычках, а затем еще код в одинарных кавычках. как 'foo' "$ var" 'bar' , но без пробелов.
p &&! / ^ * $ / - если p установлено и строка не пуста (только пробелы между началом и концом), распечатать ее (действие по умолчанию).


Да, и это приведет к сбою и сгоранию, если элементы вашего списка содержат что-нибудь забавное, например пробелы.

1
26.05.2014, 16:27
0 ответов

Теги

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