Linux
echo 命令,需要替換
我編寫了一個備份日誌腳本並在 echo 中有 2 個變數,但仍然無法正常工作。
我的命令:
echo " DB-Size $ (du -hs /backup/db/db_ $ (日期 +%F).sql " >> /backup/backup.log
在我的 echo 語句中,我有命令變數,在命令變數中有另一個變數。我需要改變什麼。對於每一個幫助,我很感激。
親切的問候
黑鬍子
在 echo 中有 2 個變數
事實上,你沒有。
變數用花括號括起來:
NAME=Fred echo ${NAME}"
你所擁有的是命令呼叫。"$(" 和 “)” 分隔符內的所有內容都作為單獨的命令執行,並且該命令的輸出作為呼叫的結果“返回”:
echo "$( pwd )"
我認為您的意圖是根據目前日期創建文件路徑,然後將該文件路徑輸入 du 命令。所以,一步一步:
你的文件路徑是:
/backup/db/db_$(date +%F).sql
這個生成的值中不能有任何空格(%F 返回 YYYY-MM-DD),所以我們不必擔心引用文件路徑。
將其“插入”到 du 呼叫中:
du -hs /backup/db/db_$(date +%F).sql
最後,在“頂級”回顯命令中呼叫它:
echo "DB-Size $(du -hs /backup/db/db_$(date +%F).sql)" >> /backup/backup.log
注意大括號的位置——“$(”開始呼叫,“)”結束。您正在呼叫兩個命令,因此您需要兩個結束的 ‘)’。
另請注意,引號較少 - 一個用於開始字元串值,另一個用於結束它。因為它們是雙引號,shell 將擴展其中的所有位,包括變數和命令呼叫 - 如果它們是單引號,它不會這樣做,將整個事物視為字元串文字。