Capture user input by opening a text editor with c

2019-07-28 22:39发布

问题:

From a bash script, I'd like to

  1. Open the default text editor for current user
  2. Paste a string $original_content in it
  3. Once the user modifies the content then closes the text editor,
  4. Capture the modified string into a variable $modified_content
  5. Then save $modified_content to an $output_file

Google searches for capturing user input shows read which is not what I'm looking for.

Can someone point me to the right direction?

Thank you

回答1:

This method should hopefully work for most editors:

#!/bin/bash

original_content="Your original content"

echo $original_content > /tmp/user_input.tmp

# For example:
# DEFAULT_EDITOR=/usr/bin/vi
$DEFAULT_EDITOR /tmp/user_input.tmp

modified_content=`cat /tmp/user_input.tmp`

echo $modified_content > /tmp/output_file

This script may be a little drawn out but it performs all the actions you wanted except for the pasting part, since you'd probably have to accommodate for all varieties of editors to properly "paste" a string. This script utilizes the benefit that calling most editors with a filename as a parameter opens that file for editing thereby "pasting" your $original_content in the editor.