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=$(echocat time
)| echo$a | echo${a:0:4}。它不提供任何输出。您必须使用分号,bot管道:a=$(echo cat time);echo$a;echo${a:0:4}