我有一個文件'list',其中包含我想解壓縮的存檔列表。我的腳本是:bash逐行讀取文件並使用行作爲參數
#!/bin/bash
while read line
do
echo 'string has been read'
grep -e '**.zip' | xargs -d '\n' unzip -o
done < 'list'
但它只適用於列表中的第一個zip存檔並忽略列表中的其他字符串。如果我註釋掉'grep -e '**.zip' | xargs -d '\n' unzip -o'
腳本,則會讀取所有行。
我不明白爲什麼它這樣工作,以及如何解決它。
至於什麼實際發生這裏'grep'命令將消耗剩下的來自'list'的行。您不告訴它從何處讀取,因此它正在讀取標準輸入,該輸入被重定向爲來自您的文件。當然,'grep -e'**。zip''將文件中的匹配除第一個之外的文件傳遞給'xargs',所以它實際上並沒有按照你認爲的那樣做。 (還要注意的是,正則表達式是無效的;它可能不會返回任何匹配或所有行,或者與匹配正則表達式的有效部分的行) – tripleee