IFS для чтения systeminfos

Я пытался считать некоторую систему infos и поместить их в переменные:

df -k | grep /dev/mmcblk0p1 | IFS=" " read -r device blocks used available use_percent mounted_on

Это не работало, все переменные пусты.

0
задан 16 April 2018 в 06:53

2 ответа

Проблемой не является IFS, это - потому что в ударе (и определенные другие оболочки) RHS конвейера выполняется в подоболочке.

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

read -r device blocks used available use_percent mounted_on < <(df -k | grep /dev/mmcblk0p1)

Посмотрите Bash: Переменное присвоение, кажется, не 'придерживается'

2
ответ дан 30 October 2019 в 02:13

Если Вы присваиваете использование переменных read, они должны быть частью того же оператора блока { ... }:

 df -k | grep /dev/mmcblk0p1 | { 
   read -r device blocks used available use_percent mounted_on
   printf "device=%s\nblocks=%s\nused=%s\navailable=%s\nuse_percent=%s\nmounted_on=%s\n" $device $blocks $used $available $use_percent $mounted_on
}
0
ответ дан 30 October 2019 в 02:13

Другие вопросы по тегам:

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