分配默認值的變量我如何讀取一行數據,並將其分配給變量,同時也讓他們默認值?讀取一條線,在BASH
我想實現這樣的事情,但不能得到語法正確。
{
read variable1=${variable1:=default1} variable2=${variable2:=default2}
read variable3=${variable3:=default3} variable4=${variable4:=default4}
} <fileList
分配默認值的變量我如何讀取一行數據,並將其分配給變量,同時也讓他們默認值?讀取一條線,在BASH
我想實現這樣的事情,但不能得到語法正確。
{
read variable1=${variable1:=default1} variable2=${variable2:=default2}
read variable3=${variable3:=default3} variable4=${variable4:=default4}
} <fileList
使用一個循環:
while read -r var1 var2 dummy; do
var1=${var1:-default1}
var2=${var2:-default2}
# process this line
done < fileList
read -r var1 var2 dummy
- 如果行有兩個以上的空間分隔的記號,他們將被讀入dummy
,可以忽略嗨,感謝您的回覆!如果有多行,這是否仍然適用? – user1378987
是的,你需要添加處理步驟。 – codeforester
我在哪裏插入讀取變量3和變量4的步驟? – user1378987
# 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
輸出
我管道的file_reader.sh
輸出到column
命令使值更易讀$ ./file_reader.sh | columnt -t
...
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
是的,這也是我想要實現的,但是每行應該有多個值。而默認值將只適用於空白行。 – user1378987
@ user1378987查看已更新的答案 –
是您的文件界定?要求不明確。 – codeforester
該文件只有空格和換行符分隔。 – user1378987
你只處理4個變量還是變量數量未知? –