Выход AWK в массив bash
Im пытается поместить содержимое простой команды в массив bash, однако у меня есть немного проблем.
df -h | awk '{ print " " }'
дает процент, используемый в файловых системах в моей системе вывод выглядит следующим образом:
1% /dev
1% /dev/shm
1% /var/run
0% /var/lock
22% /boot
22% /home
22% /home/steve
затем я хотел бы поместить каждую из этих строк в массив bash array=$(df-h| awk '{ print $5 $6 }')
однако, когда я распечатываю массив, я получаю следующее:
5%
/
1%
/dev
1%
/dev/shm
1%
/var/run
0%
/var/lock
22%
/boot
22%
/home
22%
/home/steve
Bash формирует массив на основе белого пробелы, а не разрывы линий, как я могу это исправить?
3 ответов
вам нужно сбросить переменную IFS (делиметр, используемый для массивов).
OIFS=$IFS #save original
IFS=','
df -h | awk '{ print " ""," }'
вы можете сделать это в Bash без awk.
array=()
while read -a line; do
array+=("${line[4]} ${line[5]}")
done < <(df -h)