urxvtを使用してコマンドを実行する単純なシェルスクリプトを作成しようとしています。アイデアは次のとおりです(スクリプト全体ではなくアイデアのみ)。
PRMPT="read -r CMD"
urxvt -g 55x6-20+20 -e $PRMPT
CMD
このスクリプトには2つの問題があります。最初はread
コマンドのオプションを無視するため、この種の操作には適していません(readと書くと割り当てられ、無視されますecho hello
)。 2番目と私を最も混乱させることは、私の入力を待たずにすぐに終了することです。私はこれが組み込み関数に関連していると思いますが、例えばそれはうまくいきます。echo
CMD
hello
urxvt -e
read
urxvt -e echo hello
スクリプトを変更する方法について提案がある人はいますか?
答え1
あなたの目標は何ですか? echoは実行可能で/bin/echo
あり、読み取りは組み込まれています。 -e は実行ファイルを実行することを意味します。シェルの組み込み機能(bash?)を使用するには、次のようにします。urxvt -e /bin/bash -c read -r CMD
答え2
わからないurxvt
。しかし、私が助けることができますread
。
この方法を使用する場合read
:
read -r CMD
最初の割り当てトークン変数を読みますCMD
。より多くのタグを読むには、より多くの変数を明示的に宣言できます。
read -r CMD ARGS1 ARG2 ARG3
この場合、割り当てる必要がある変数の数よりも多くのタグがある場合、最後の変数は直感的に読み取る必要がある値と残りのタグを読み取った値の両方を取得します。
オプションを追加して配列を使用することもできます-a
。
read -ra CMD
配列を拡張するには:
"${CMD[@]}"
イラスト。
$ read -a cmd
echo ok
$ ${cmd[@]}
ok