我有一个简单的功能来打开编辑器:
open_an_editor() { 纳米“1美元” }
如果调用 like open_an_editor file.ext
,它可以工作。但是如果我需要从函数中获取一些输出smth=$(open_an_editor file.ext)
——我看不到编辑器,脚本就卡住了。我在这里想念什么?
更新:我正在尝试编写一个函数,如果脚本参数中没有给出它,它会要求用户在编辑器中写入一个值。
#!/bin/bash open_an_editor() { 如果 [ "$1" ] 然后 回声“$ 1” 返回 0 菲 tmpf=$(mktemp -t 首选项) echo "默认值,请编辑" > "$tmpf" # 这里应该出现编辑器, # 允许用户编辑值并保存 # 这将在不显示编辑器的情况下卡住: #nano "$tmpf" # 但是,在 Kimvais 的帮助下,它可以完美运行: 纳米“$tmpf” 3>&1 1>&2 2>&3 猫“$tmpf” rm "$tmpf" } 某事=$(open_an_editor "$1") # 然后我可以用这个值做一些有用的事情, # 例如计算其中的字符数 回声 -n "$something" | 厕所-c
因此,如果使用参数调用脚本./script.sh "A value"
,该函数将使用该参数并立即回显 7 个字节。但是如果不带参数调用./script.sh
—— nano 应该会弹出。