我是unix新手。我在 ubuntu 终端中输入了这个命令:
pwd | echo
pwd
我期望看到终端( )的输出/home/fatemeh/Documents/Code/test
,但输出只是一个空行。
为什么会发生这种情况?
答案1
echo
不对标准输入执行任何操作;它只解析它的参数。因此,您正在有效地运行echo
,它本身会输出一个空行,并且标准输入将被丢弃。
如果您想查看尝试实现的行为,请使用旨在解析标准输入的工具,例如cat
:
$ pwd | cat
/home/username
如果您确实想用来echo
显示当前工作目录(或另一个命令的输出),您可以使用命令替换来为您执行此操作:
$ echo "Your shell is currently working in '$(pwd)'."
Your shell is currently working in '/home/username'.
答案2
正如其他答案中所述,echo
不从标准输入读取,因此它不会打印 的输出pwd
。以防万一您还不知道,pwd
请自行打印它的输出,这样您只需单独运行它即可获得您想要的结果。
$ pwd
/current/working/dir
如果你真的想为此使用 echo 你可以使用命令替换。这会将命令 ( pwd
)的输出echo
作为参数传递。在这个例子中这也是不必要的,因为pwd
它将输出它自己的...输出到标准输出。
$ echo "$(pwd)"
/current/working/dir
答案3
该echo
命令不从标准输入读取,而是写入您告诉它写入的内容。在这种情况下,您没有告诉它写任何内容,因此它打印的只是换行符。 pwd | echo
相当于只是跑步echo
。
如果你想使用管道,那么你需要使用一些从标准输入读取的命令(例如,cat
):
$ pwd | cat
/path/to/current/directory
$