我試圖將多個命令組合到一個輸出中。將兩個shell命令合併到shell中的一個輸出
#!/bin/bash
x=$(date +%Y)
x=$($x date +m%)
echo "$x"
這返回
./test.sh: line 4: 2011: command not found
我試圖將多個命令組合到一個輸出中。將兩個shell命令合併到shell中的一個輸出
#!/bin/bash
x=$(date +%Y)
x=$($x date +m%)
echo "$x"
這返回
./test.sh: line 4: 2011: command not found
x=$(echo $(date +%Y) $(date +%m))
(請注意,您已將月份格式的字符%
和m
換位。)
分號在命令行上分離的命令。
date +%Y ; date +m%
或者,如果你只是想運行的第二個命令,如果第一個成功,使用雙符號:
date +%Y && date +%m
或者,如果你想同時運行兩個命令,混合它們的輸出不可預測(可能不是你想要的,但我想我是徹底的),使用單一的符號:
date +%Y & date +%m
也許這樣?
#!/bin/bash
x=$(date +%Y)
x="$x$(date +%m)"
echo "$x"
...還糾正這似乎是在你傳遞給date
第二陣子格式字符串轉置。
echo ´date +%Y´ ´date +m%´
注意反向音符(')
除了你使用錯誤的字符。而`$()`是首選。 – 2011-02-13 00:57:14
在第二行,你要執行$x date +m%
。此時,$ x將設置爲2011年。所以現在它試圖運行此命令:
2011 date +%m
這不是你想要的。
你可以做這一點:
x=$(date +%Y)
y=$(date +%m)
echo "$x $y"
或者說:
x=$(date +%Y)
x="$x $(date +%m)"
echo "$x"
或者乾脆用最後的日期格式直線距離:
echo `date +%Y` `date +%m`
又使OP的最小變化爲:
x=$(date +%Y)
x="$x $(date +%m)"
echo "$x"
使用回聲就沒有意義 - 它不會添加任何內容,因爲您只是給它一個字符串,然後再次捕獲相同的字符串。你可以做`x =「$(date +%Y)$(date +%m)」` – 2011-02-13 00:54:52
@John Bartholomew,你是對的,這是一種習慣,因爲我傾向於直接回聲給sed等。 – rlibby 2011-02-13 01:08:21