如何使用脚本中的 $EDITOR 提示用户输入?

如何使用脚本中的 $EDITOR 提示用户输入?

我想要一个类似于 的输入机制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将负责创建临时文件并删除它。

相关内容