В двух словах:
/ называется корневым каталогом для всей системы; все каталоги системы спускаются из этого каталога так или иначе. /root является root пользователем (точнее, пользователь с UID 0) home directoryЕсли вы назначаете переменные с помощью 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
}
Проблема не в IFS, потому что в bash (и некоторых других оболочках) RHS конвейера выполняется в подоболочке.
Простой альтернативой является использование замещения процесса, чтобы сохранить read в родительской оболочке:
read -r device blocks used available use_percent mounted_on < <(df -k | grep /dev/mmcblk0p1)
См. Bash: Назначение переменной не похоже на «stick»
Если вы назначаете переменные с помощью 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
}
Проблема не в IFS, потому что в bash (и некоторых других оболочках) RHS конвейера выполняется в подоболочке.
Простой альтернативой является использование замещения процесса, чтобы сохранить read в родительской оболочке:
read -r device blocks used available use_percent mounted_on < <(df -k | grep /dev/mmcblk0p1)
См. Bash: Назначение переменной не похоже на «stick»