Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何从文件中填充变量?_Bash - Fatal编程技术网

Bash 如何从文件中填充变量?

Bash 如何从文件中填充变量?,bash,Bash,如何从文件中填充变量 在/root/file中,我有4行(数字和文本) 如何设置四个变量的值,文件每行一个值 预期结果: ABC="478" DEF="144" GHI="text" JKL="0" 假设文件名为file.txt。只需使用复合命令将每一行读入所需的变量,一次读入一行即可 { IFS= read -r ABC; IFS= read -r DEF; IFS= read -r GHI; IFS= read -r JKL; } < file.txt 我们使用复合命令{…}在所

如何从文件中填充变量

/root/file
中,我有4行(数字和文本)

如何设置四个变量的值,文件每行一个值

预期结果:

ABC="478"
DEF="144"
GHI="text"
JKL="0"

假设文件名为
file.txt
。只需使用复合命令将每一行读入所需的变量,一次读入一行即可

{ IFS= read -r ABC; IFS= read -r DEF; IFS= read -r GHI; IFS= read -r JKL; } < file.txt

我们使用复合命令
{…}
在所有读取中共享
file.txt
的输入;如果没有它,使用类似

read ABC < file.txt
read DEF < file.txt
read GHI < file.txt
read JKL < file.txt
读取ABC

每次
读取
都会从文件开始读取,导致文件的第一行被分配四次。

ABC
DEF
等从何而来?!文件中的行数是固定的吗?如果行数是静态的,您可以像这样使用awk:
ABC=$(awk'NR==1'/root/file)
wow这很酷。它能工作,但我不明白read做什么。thnx
read
只需从其标准输入中读取一行,并将其分配给由其参数命名的变量。在本例中,我们将四个
read
s包装在一个复合命令中,以便它们共享来自文件的单个输入流;第一个
read
看到第一行,第二个
read
看到第二行,以此类推。
{ read ABC; read DEF; read GHI; read JKL; } < file.txt
read ABC < file.txt
read DEF < file.txt
read GHI < file.txt
read JKL < file.txt