小弟有一些bash script
先撈取資料,轉存入暫存檔內
再讀取該暫存檔,進行逐筆處理。
範例如下
#! /bin/bash
ls -l /var/log/messages* > temp # 資料結果轉入暫存檔
exec < temp # 將檔案讀進標準輸入
while read rec
do
echo $rec # 進行處理
done
日子久了,長出一堆亂七八糟的檔案。
想請問一下
如何改寫上面的script
能夠不使用暫存檔,而達到同樣的功能?
可以像這樣用 <<<
直接把字串輸入另一個指令,字串中的 $()
則是取其中的指令執行的結果,然後轉成字串
while read rec; do
echo $rec # 進行處理
done <<< "$(ls -l /var/log/messages*)"
或是你也可以修改 IFS
old_ifs="$IFS" # 備份 IFS ,如果有需要的話
IFS=$'\n'
for rec in $(ls -l /var/log/messages*); do
echo $rec # 進行處理
done
IFS="$old_ifs" # 還原 IFS
這樣不行嗎?
ls -l /var/log/messages* | exec
while read rec
do
echo $rec # 進行處理
done