bash命令产生奇怪的行为

时间:2019-06-11 06:20:18

标签: bash command

我正在学习bash,碰巧在bash中键入var = "$(cat)",奇怪的是它进入了bash提示符,直到我使用 ctrl-c 为止。

命令var = "$(cat)"是什么?

bash-3.2$ var = "$(cat)"

^C
bash-3.2$

1 个答案:

答案 0 :(得分:1)

编写gradient表示您正在尝试存储执行命令var=$(cat)的子shell的输出。但是,不带参数执行cat等效于cat(也与cat STDIN相同),如果您没有正确终止输入流,cat -仍将读取从cat直到被中断(这就是为什么您认为提示符消失了,但实际上您在子外壳中的原因)。

由于您要向{sub}进程发送STDIN信号(SIGINT),因此该命令(以及子外壳程序)以非0状态退出(您可以检查退出在CTRL+C之后执行echo $?的状态,对于由var=$(cat)终止的进程,它应该等于130。或者,您可以尝试向上述子shell的SIGINT写一些内容,然后发送STDIN,当在给定终端的一行的开头键入内容时,它表示输入的结束,而不是CRTL+D。最后,您可以输入CTRL+C,以检查变量分配是否按预期工作。

相关问题