組み込みの読書について学ぶ

組み込みの読書について学ぶ

urxvtを使用してコマンドを実行する単純なシェルスクリプトを作成しようとしています。アイデアは次のとおりです(スクリプト全体ではなくアイデアのみ)。

PRMPT="read -r CMD"
urxvt -g 55x6-20+20 -e $PRMPT
CMD

このスクリプトには2つの問題があります。最初はreadコマンドのオプションを無視するため、この種の操作には適していません(readと書くと割り当てられ、無視されますecho hello)。 2番目と私を最も混乱させることは、私の入力を待たずにすぐに終了することです。私はこれが組み込み関数に関連していると思いますが、例えばそれはうまくいきます。echoCMDhellourxvt -ereadurxvt -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

関連情報