Я пытался считать некоторую систему infos и поместить их в переменные:
df -k | grep /dev/mmcblk0p1 | IFS=" " read -r device blocks used available use_percent mounted_on
Это не работало, все переменные пусты.
Проблемой не является IFS, это - потому что в ударе (и определенные другие оболочки) RHS конвейера выполняется в подоболочке.
Простая альтернатива должна использовать замену процесса для хранения read
в родительской оболочке:
read -r device blocks used available use_percent mounted_on < <(df -k | grep /dev/mmcblk0p1)
Посмотрите Bash: Переменное присвоение, кажется, не 'придерживается'
Если Вы присваиваете использование переменных 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
}