エディターを開くための簡単な関数があります。
open_an_editor() {{ nano「$1」 }
のように呼び出された場合open_an_editor file.ext
、それは機能します。しかし、関数から出力を取得する必要がある場合— smth=$(open_an_editor file.ext)
—エディターが表示されないため、スクリプトがスタックします。ここで何が欠けていますか?
更新:スクリプト引数で値が指定されていない場合に、ユーザーにエディターで値を書き込むように要求する関数を作成しようとしています。
#!/ bin / bash open_an_editor() {{ if ["$ 1"] それから エコー「$1」 0を返す fi tmpf = $(mktemp -t pref) echo"デフォルト値。編集してください">"$tmpf" #そしてここにエディターが表示されます、 #ユーザーが値を編集して保存できるようにする #これはエディターを表示せずにスタックします: #nano "$ tmpf" #しかし、これは、Kimvaisの助けを借りて、完全に機能します。 nano "$ tmpf" 3>&1 1>&2 2>&3 猫「$tmpf」 rm "$ tmpf" } something = $(open_an_editor "$ 1") #そして私はその値で何か役に立つことができます、 #たとえば、その中の文字を数える echo -n "$ something" | wc -c
したがって、スクリプトが引数を指定して呼び出された場合./script.sh "A value"
、関数はそれを使用し、すぐに7バイトをエコーします。しかし、引数なしで呼び出された場合./script.sh
—nanoがポップアップするはずです。