Bash

將製表符分隔的欄位轉換為變數的緊湊方法

  • April 5, 2018

在 Bash 中,我將一行中的欄位讀入數組。讓我強調一下性能是一個問題,所以我買不起任何產生子程序的東西。

為了使程式碼更具可讀性,我希望將欄位轉換為變數:$width${array[0]}. 我必須手動設置每個變數,就像這樣,這是很多重複:

while read line; do

 array=($line)
 width=${array[0]}
 height=${array[1]}
 size=${array[2]}
 date=${array[3]}
 time=${array[4]}

 # use $width, $height, etc. in script

done < file

是否有任何緊湊的方法可以做到這一點,比如listPHP 中的指令?

list($width, $height, $size, $date, $time) = $array;

是的:

while read -r width height size thedate thetime; do
   # use variables here
done <file

這將從標準輸入讀取數據並將數據拆分為空格(空格或製表符)。最後一個變數將獲得“剩餘”的任何數據(如果欄位多於讀取的變數)。這不是讀入變數line

我使用了變數名thedatethetime而不是datetime那些是實用程序的名稱。

要僅在選項卡上拆分行,請設置IFS為選項卡read

IFS=$'\t' read -r width ...etc...

也可以看看:

引用自:https://unix.stackexchange.com/questions/435814