#!/bin/bash indir='/some/other/path' outdir='/some/path' list=( 001 002 003 ) for i in "${list[@]}"; do mkdir -p "$outdir/output_$i" python somescript.py -input "$indir/dir_$i" -output "$outdir/output_$i/table_$i.txt" inargs+=( -i "table_$i.q" ) done some_other_script "${inargs[@]}" -o all.q
Наблюдения:
- Назначения могут не иметь места вокруг
=
.- Отступы и пробелы улучшают читаемость.
- Не зацикливаться на строках, зацикливаться на массивах.
- Процитировать все раскрытия переменных.
Относительно цитирования расширений переменных:
Если я вас правильно понял:
echo "$var" | grep -o "..:..:..:..:.."
Выход:
aa:bb:cc:dd:ee:ff
Вы можете попробоватьawk
my_command_with_output | awk -F'[()]' '/^WIFI_MAC_Address/{sub(/^.*: /,"");print $1}'
Вы можете поместить это в переменную
variable=$(my_command_with_output | awk -F'[()]' '/^WIFI_MAC_Address/{sub(/^.*: /,"");print $1}')
Распечатайте содержимое переменной.
echo "$variable"
Выход
aa:bb:cc:dd:ee:ff
Вы можете захватить любой допустимый MAC-адрес (с начальным пробелом )с помощью этого регулярного выражения:
command | grep -oE '([ :][[:xdigit:]]{2}){6}'
Или в оболочке bash:
$ regex='(([[:xdigit:]]{2}:){5}([[:xdigit:]]{2}))';
$ [[ $var =~ $regex ]] && printf '%s\n' "${BASH_REMATCH[1]}"
aa:bb:cc:dd:ee:ff