作爲使用shell腳本的初學者,我編寫了這個bash腳本函數來返回文件的md5sum,同時爲用戶提供一個GUI進度條。如何避免在此bash腳本中使用臨時文件?
md5sum_of_file() {
(pv -n $1 | md5sum | sed -e 's/\s.*//g' > /tmp/md5sum) 2>&1 | zenity --progress --auto-close
echo $(</tmp/md5sum)
rm /tmp/md5sum
}
pv -n $1
饋送文件到md5sum | sed -e 's/\s.*//g'
(SED條之和的相關聯的文件名的輸出),而管道中的百分比zenity --progress --auto-close
。 (pv -n $ 1 | $(md5sum | sed -e's/\ s。* // g'))「我知道你不能在這個實例中簡單地將校驗和賦值給一個變量,因爲」(pv -n $ 1 | $(md5sum | sed -e's/\ s。* // g'))「在它自己的子shell中。但有沒有辦法做到這一點,而不創建一個臨時文件(在這種情況下「/ tmp/md5sum」)?
謝謝。
爲什麼不是:'pv -n $ 1 | md5sum | sed -e's/\ s。* // g'| zenity --progress --auto-close' – anubhava
你的流水線真的很奇怪......所以你有一個可執行文件,其名稱是通過'pv'輸入的md5總和?你想執行它? –
@gniourf_gniourf - 哎呀抱歉 - 修正了這個問題。我認爲命令替換從我身上遺留下來,試圖將md5sum分配給父shell中的變量(在我瞭解子shell中的變量作用域之前)。剛開始嘗試今天學習Bash:P。 – Inops