linux - 从 bash 脚本和 cat 文件打开编辑器到变量不起作用
问题描述
为什么这不起作用?必须有一个非常简单的答案。
我有两个 bash 脚本。第一个脚本调用第二个脚本,它在 tmp 文件上打开一个编辑器,一旦用户退出,cat 将分配给第一个脚本中的变量的文件。
测试使用编辑器
#!/bin/bash
test=$(use-editor)
echo $test
使用编辑器
#!/bin/bash
TMP_MSG="/tmp/tmp_msg"
$EDITOR $TMP_MSG
cat $TMP_MSG
rm $TMP_MSG
如果我use-editor
在没有分配$()
的情况下调用并且编辑器打开得很好,但是如果我尝试将其分配给它,$test
它就会挂起。编辑器确实启动了,因为我可以在我的进程中看到它,但它位于子外壳或其他东西中。如何让它在调用第一个脚本的终端中打开?
解决方案
正如thatotherguy 所建议的那样,您需要将tty 传递给use-editor。
测试使用编辑器
#!/usr/bin/env bash
test=$(./use-editor $(tty))
echo $test
使用编辑器
#!/usr/bin/env bash
TTY=${1:-/dev/tty}
TMP_MSG="/tmp/tmp_msg"
$EDITOR $TMP_MSG < $TTY >& $TTY
cat $TMP_MSG
rm $TMP_MSG
推荐阅读
- python - 如何取消选择整个 QTableWidget 行
- node.js - 如何在 Web 应用程序的前端显示 MongoDB 聚合管道结果?
- python - AWS Glue 中的 gremlin 和 PySpark
- python - 通过前向填充将 Pandas 系列转换为单调递增
- outlook - 图形查询以将传出消息发送给外部收件人
- google-cloud-platform - Google Cloud Run 上的 Hasura - 监控
- javascript - 在 NetSuite 中通过 map/reduce 更新订单状态等待履行的销售订单
- node.js - 节点邮件程序。验证两封电子邮件是否正确发送
- java - POJO中的多个查询值绑定
- python - 使用 Python 从 Outlook 收件箱中获取所有电子邮件并将其保存到本地文件夹中