Bash
命令的結果未分配給變數
在 BASH 和 Shell 腳本方面,我非常缺乏經驗(委婉地說),所以請耐心等待:
$ toda=$(date) | echo $toda
給我:Fr 29 Mai 2020 15:25:19 CEST。到目前為止,一切都很好。
datediff 是 dateutils 包的一部分,它返回日期之間的天數:
datediff 2019-12-31 2020-05-29
給我:150。再說一次,到目前為止一切都很好。但:
toda=$(datediff 2019-12-31 2020-05-29) | echo $toda
給我回复:Fr 29 Mai 2020 15:25:19 CEST 而不是(如預期的那樣)150。換句話說,它沒有分配 datediff 結果,但保持前操作的值不變。當然我試過:
anothervarname=$(datediff 2019-12-31 2020-05-29) | echo $anothervarname
它返回一個空變數(即提示上方的空行)。我必須做什麼才能將上面範例中的 datediff 結果分配給變數?謝謝你的幫助。
‘|’ 用於將一個命令的輸出重定向到下一個命令。在您的情況下,在第一個命令 bcz 中不會產生任何輸出,它只是將值分配給變數。
你必須使用的是:(試試這個)
toda=$(date) && echo "$toda"
&&
-> 如果只有第一個命令成功,則執行尾隨命令。AND 運算符。