Shell 使用echo命令将输出分配给变量

Shell 使用echo命令将输出分配给变量,shell,Shell,以下代码不提供任何输出: $echo `cat time` 19991213100942 $a=$(echo `cat time`) | echo $a | echo ${a:0:4} 请告诉我哪里出错了 a=$(echo `cat time`) 将括号$(…)内的命令输出分配给变量$a。 在脚本的后面,您可以打印变量: echo $a 打印:19991213100942 echo ${a:0:4} 打印:1999 您可以通过变量的名称引用变量,首先,您不需要回显cat time:只需c

以下代码不提供任何输出:

$echo `cat time`
19991213100942
$a=$(echo `cat time`) | echo $a | echo ${a:0:4}
请告诉我哪里出错了

a=$(echo `cat time`)
将括号
$(…)
内的命令输出分配给变量
$a
。 在脚本的后面,您可以打印变量:

echo $a
打印:
19991213100942

echo ${a:0:4}
打印:
1999


您可以通过变量的名称引用变量,首先,您不需要
回显
cat time
:只需
cat time

其次,正如@Etan所说的(有点),用分号或换行符替换管道

a=$(< time)    # a bash builtin, equivalent to but faster than: a=$(cat time)
echo $a
echo ${a:0:4}
a=$(
管道涉及子壳体。那里的管道也是无用的和不正确的。放下管道。@user2610请解释您想要实现的目标。@chaos:我想将echo的输出存储到一个变量中,然后将该字符串分隔为不同的子字符串。@EtanReisner:我想将该变量存储到“a”中,并在命令行中进一步使用它,如图所示。简单地
cat time
有什么问题吗?为什么您必须捕获
cat
的输出才能再次
echo
它?而且,
echo
不太可能从stdin读取数据,因此,
…|echo…
有点毫无意义。我想知道为什么命令行不能作为一个整体工作:a=$(echo
cat time
)| echo$a | echo${a:0:4}。它不提供任何输出。您必须使用分号,bot管道:
a=$(echo cat time);echo$a;echo${a:0:4}