将两个shell命令合并到shell中的一个输出中

时间:2011-02-13 00:44:48

标签: bash shell

我正在尝试将多个命令合并为一个输出。

#!/bin/bash

x=$(date +%Y)
x=$($x date +m%)

echo "$x"

返回

  

./ test.sh:line 4:2011:找不到命令

6 个答案:

答案 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"