2015-09-19 56 views
0

我想設置變量,因此我可以在Bash中的while循環中使用它們進行評估。在Bash中的while循環中設置變量

while read l; do 
    echo $l 
    HASH=echo $l | awk '{print$1}' 
    FILE_NAME=echo $l | awk '{print$2}' 
    echo $HASH 
    echo $FILE_NAME 
done <$OLD_LOG_FILE 

當我雖然運行它,我得到以下錯誤:

./hash.sh: line 38: e5491a14c7374e7f2ee18e3095f8ac65: command not found 
./hash.sh: line 39: e5491a14c7374e7f2ee18e3095f8ac65: command not found 

線38和39,其中HASH和FILE_NAME設置線。

我使用單引號,而不是做引號。

應該使用不同的方法設置HASH和FILE_NAME變量嗎?

+3

如果你只對第一和第二個字段感興趣,那麼爲什麼不用''read'命令也是這樣,並溝'awk'? 'while read read -r hash file_name _;做echo「hash = $ hash和file_name = $ file_name」;完成<「$ old_log_file」'。順便說一句,如果文件名中有空格或有趣的字符會發生什麼? –

回答

4

你想命令替換:

HASH=$(echo $l | awk '{print$1}') 

你使用什麼是預先設定的環境變量,執行程序的特殊的語法:

var1=value progname args... 

因此慶典被抱怨的價值$l不是可以找到的命令。