bash - bash 命令产生奇怪的行为
问题描述
我正在学习 bash 并且碰巧输入var = "$(cat)"
了 bash,奇怪的是它进入并且 bash 提示消失了,直到我使用ctrl-c。
命令是什么var = "$(cat)"
?
bash-3.2$ var = "$(cat)"
^C
bash-3.2$
解决方案
写作var=$(cat)
意味着您正在尝试存储执行命令的子shell的输出cat
。但是,不带参数执行等效于cat
(也cat STDIN
与在子外壳中)。cat -
cat
STDIN
由于您将SIGINT
信号 ( CTRL+C
) 发送到 (sub) 进程,因此命令以及子 shell 以非 0 状态退出(您可以检查在echo $?
之后执行的退出状态var=$(cat)
,它应该等于 130进程由SIGINT
) 终止。或者,您可以尝试向STDIN
上述子shell 的 写一些东西,然后发送CRTL+D
,当在给定终端上的行首键入时,它表示输入的结束,而不是CTRL+C
。最后,您可以键入echo $var
以检查变量分配是否按预期工作。
推荐阅读
- mongodb - 如何确保 goroutine 在退出之前完全运行
- json - SQL Server- JSON 对象同时包含字符串和数组:如何通过单个查询获取结果?
- vue.js - Echo.private 和 /broadcasting/auth 405 错误
- javascript - 图片无法覆盖手机全屏
- cakephp - 在脚本块末尾添加 javascript 文件
- java - Swing:如何从用户端为文本编码“设置颜色”?
- bit-manipulation - MaxScript swapBytes 函数在位运算符方面如何工作?
- go - 函数不会返回多个返回值 - 单值上下文中的多个值
- matlab - MATLAB plot3左手坐标系
- php - 更改多个特定 woocommerce 产品类别的默认排序顺序