bash管道中当前变量的名称

时间:2013-05-26 21:38:52

标签: bash powershell pipeline

在powershell $_中是使用管道传递的当前变量的名称。在Bash中这相当于什么?

假设我想这样做

echo "Hi" | echo "$_"
   prints Hi

由于

3 个答案:

答案 0 :(得分:2)

Bash(或任何其他Unix shell)没有这样的东西。

在PowerShell中,通过管道传递的是一个对象。在bash中,这是命令的输出(到标准输出)。

你可以做的事情是使用while

thecmd | while read theline; do something_with "$theline"; done

请注意,使用IFS(输入字段分隔符),您也可以这样做:

thecmd | while read first therest; do ...; done

答案 1 :(得分:0)

在Unix意识形态中,没有对象或变量。 Unix的主要卖点是一切都是纯文本,因此您只需将文本从一个命令传递到另一个命令。

你可以认为你只有一个变量而且你总是隐含地使用它。你的例子有点奇怪,但我能想到的最接近的是cat命令,它接受任何输入(想想唯一的隐式变量)并输出它,所以

echo "Hi" | cat

打印

Hi

答案 2 :(得分:0)

如果您确实需要将此值作为变量访问(无论出于何种原因),您可以使用括号中的子命令将其伪造为变量名称,如下所示:

echo "Hi" | echo "$(cat)"