我正在学习bash,碰巧在bash中键入var = "$(cat)"
,奇怪的是它进入了bash提示符,直到我使用 ctrl-c 为止。
命令var = "$(cat)"
是什么?
bash-3.2$ var = "$(cat)"
^C
bash-3.2$
答案 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
,以检查变量分配是否按预期工作。