Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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_Shell - Fatal编程技术网

读取一行并为BASH中的变量指定默认值

读取一行并为BASH中的变量指定默认值,bash,shell,Bash,Shell,如何读取一行数据并将其分配给变量,同时也为其提供默认值 我想实现类似这样的功能,但语法不正确 { read variable1=${variable1:=default1} variable2=${variable2:=default2} read variable3=${variable3:=default3} variable4=${variable4:=default4} } <fileList { 读取variable1=${variable1:=default1}vari

如何读取一行数据并将其分配给变量,同时也为其提供默认值

我想实现类似这样的功能,但语法不正确

{ 
read variable1=${variable1:=default1} variable2=${variable2:=default2} 
read variable3=${variable3:=default3} variable4=${variable4:=default4} 
} <fileList
{
读取variable1=${variable1:=default1}variable2=${variable2:=default2}
读取variable3=${variable3:=default3}variable4=${variable4:=default4}
}使用循环:

while read -r var1 var2 dummy; do
  var1=${var1:-default1}
  var2=${var2:-default2}
  # process this line
done < fileList
读取时-r var1 var2 dummy;做
var1=${var1:-default1}
var2=${var2:-default2}
#处理这条线
完成<文件列表
  • read-r var1 var2 dummy
    -如果一行有两个以上空格分隔的标记,它们将被读入
    dummy
    ,并且可以忽略
  • 如果一行少于两个标记,则默认值将有效
脚本(文件\u reader.sh)
嗨,谢谢你的回复!如果有多行,这是否仍然适用?是的,您需要添加处理步骤。我在哪里插入读取variable3和variable4的步骤?循环的每次迭代都将从您的文件中读取一行。尝试了您的建议,但没有为变量分配值<代码>$whileread-r var01 var02 var03 var04;do:${var01:=default01};:${var02:=default02};:${var03:=default03};:${var04:=default04};完成
文件是否有分隔符?要求不明确。文件仅用空格和换行符分隔。您只处理4个变量还是变量的数量未知?变量的最大数量为4,但可能只得到一行(即仅2个变量)是,这也是我想要实现的,但是每行应该有多个值。默认值只适用于空白行。
# Read in the 2 fields from the first (odd) line
while read var1 var2
do
  # Read in the 2 fields from the next (even) line
  read var3 var4

  # Set defaults
  : ${var1:=var1_default}
  : ${var2:=var2_default}
  : ${var3:=var3_default}
  : ${var4:=var4_default}

  echo "$var1 $var2 $var3 $var4"
done < foo.txt
eins zwei         < line 1 (odd)
drei vier         < line 2 (even)
    < blank line
fünf
    < blank line
sechs sieben
acht
eins         zwei         drei         vier
var1_default var2_default fünf         var4_default
var1_default var2_default sechs        sieben
acht         var2_default var3_default var4_default