【发布时间】:2018-02-10 13:00:33
【问题描述】:
我正在学习 Bash 脚本中的 IFS。我无法理解 IFS 的概念。
考虑以下文件。内存.txt
i6
16GB
10T
还有下面的shell脚本来
#!/bin/bash
echo "File pls"
read file
while read -r CPU MEM DISK; do
echo "CPU : $CPU"
echo "MEM : $MEM"
echo "DISK: $DISK"
done<"$file"
I Read that,shell将IFS设置为空格、制表符、换行符。所以当我运行脚本时,
File pls
mem.txt
CPU : i6
MEM :
DISK:
CPU : 4hz
MEM :
DISK:
CPU : 16GB
MEM :
DISK:
CPU : 10TB
MEM :
DISK:
为什么没有显示每行的每个条目,例如 CPU :i6 ;内存:16GB;磁盘:10T,因为 IFS 接受换行符作为条目?请解释 IFS 的工作原理?
【问题讨论】:
-
Bash read 内置一次读取一行。参见例如wiki.bash-hackers.org/commands/builtin/read
-
你从哪里得到 4hz?您正在逐行阅读文件。在每一行上,期望是 3 个变量,但输入文件中只有一个变量...