我有一个简单的功能来打开编辑器:
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 应该会弹出。