Bash

命令的結果未分配給變數

  • May 29, 2020

在 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 運算符。

引用自:https://unix.stackexchange.com/questions/589747