我想要一个类似于 的输入机制git commit
。当脚本运行时,它应该打开一个编辑器来编辑临时文件,使用该文件作为我的输入,然后删除该文件。
答案1
一种解决方案是使用内置read
命令。
read -r -p 'Please enter your favorite editor' editor
echo "You have enter $editor"
现在该值位于$editor"
变量中,下一步是测试是否确实安装了编辑器或在您的 PATH 中。
if type "$editor" >/dev/null 2>&1; then
command "$editor" ENTER_THE_FILE_YOU_WANT_TO_EDIT
else
echo "$editor no such file or directory!" >&2
exit 127
fi
看
help type
help command
127 退出状态是如果没有可执行文件、别名、函数,shell 将退出的状态。看一下
man 1p exit
答案2
您可以使用vipe
没有任何内容(或一些默认文本)作为输入:
% foo=$(echo | vipe)
# opens an editor, I add `foo bar`
% echo "$foo"
foo bar
vipe
将负责创建临时文件并删除它。