Докер белого списка nftables

В основном это дубликат новых строк и переменной bash , хотя это не распространяется на массивы. Оттуда, чтобы использовать переменную, содержащую несколько строк, вам нужно разделить расширение параметра на новую строку и пропустить подстановку, и в зависимости от ваших данных, возможно, избежать других искажений:

 usbs=$( lsusb... )
 IFS=$'\n'  # ksh bash zsh; in other shells you may need to quote an actual newline
 set -o noglob  # or more tersely set -f
 for i in $usbs; do
   printf '%s\n' "$i" # not echo which sometimes modifies some data
 done
 # if you do further things in the same script (or function) you may 
 # need to re-set IFS and/or glob, which may require saving them first

Для массива readarray/mapfile, предложенный Джесси _b, является самым простым, поскольку он уже разбивается на строки. Но вы можете сделать это "вручную" так же, как описано выше :

.

set -o noglob  # ditto 
IFS=$'\n' usbs=( $( lsusb... ) )  # only ksh up has arrays so $'' safe
# set +o noglob or set +f if needed
for i in "${usbs[@]}"; do # quoted array[@] forces splits equal to array elements only
  printf '%s\n' "$i"
done

1
09.07.2021, 19:21
0 ответов

Теги

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