首页 > 解决方案 > bash 命令产生奇怪的行为

问题描述

我正在学习 bash 并且碰巧输入var = "$(cat)"了 bash,奇怪的是它进入并且 bash 提示消失了,直到我使用ctrl-c

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

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

^C
bash-3.2$

标签: bashcommand

解决方案


写作var=$(cat)意味着您正在尝试存储执行命令的子shell的输出cat。但是,不带参数执行等效于cat(也cat STDIN与在子外壳中)。cat -catSTDIN

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


推荐阅读