Bash
將製表符分隔的欄位轉換為變數的緊湊方法
在 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
是否有任何緊湊的方法可以做到這一點,比如
list
PHP 中的指令?list($width, $height, $size, $date, $time) = $array;
是的:
while read -r width height size thedate thetime; do # use variables here done <file
這將從標準輸入讀取數據並將數據拆分為空格(空格或製表符)。最後一個變數將獲得“剩餘”的任何數據(如果欄位多於讀取的變數)。這不是讀入變數
line
。我使用了變數名
thedate
,thetime
而不是date
和time
那些是實用程序的名稱。要僅在選項卡上拆分行,請設置
IFS
為選項卡read
:IFS=$'\t' read -r width ...etc...
也可以看看: