我正在尝试将多个命令合并为一个输出。
#!/bin/bash
x=$(date +%Y)
x=$($x date +m%)
echo "$x"
返回
./ test.sh:line 4:2011:找不到命令
答案 0 :(得分:6)
x=$(echo $(date +%Y) $(date +%m))
(请注意,您已使用月份格式转换了字符%
和m
。)
答案 1 :(得分:5)
在第二行中,您尝试执行$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"
或者直接使用最终日期格式:
x=$(date "+%Y %m")
echo $x
答案 2 :(得分:1)
也许这个?
#!/bin/bash
x=$(date +%Y)
x="$x$(date +%m)"
echo "$x"
...还会在第二次传递给date
的格式字符串中更正看似转码的内容。
答案 3 :(得分:0)
分号在命令行上分隔命令。
date +%Y ; date +m%
或者,如果您只想在第一个命令成功时运行第二个命令,请使用双&符号:
date +%Y && date +%m
或者如果你想同时运行这两个命令,混合他们的输出是不可预测的(可能不是你想要的,但我认为我会彻底),使用一个&符号:
date +%Y & date +%m
答案 4 :(得分:0)
echo ´date +%Y´ ´date +m%´
注意反向重音(')
答案 5 :(得分:0)
echo `date +%Y` `date +%m`
并对OP进行最小的更改:
x=$(date +%Y)
x="$x $(date +%m)"
echo "$x"