任意のキーを使用してbashスクリプトを停止する

任意のキーを使用してbashスクリプトを停止する

私はカスタムGNOME端末プロファイルを作成しており、選択したキーを使用してプロファイルを停止したいと思います。キーを押した後、その時点ですべてのコマンドを完了し、suを開始する意図です。コマンドに&を追加しようとしましたが、機能しません。いくつかの情報を添付します。

私のコード:

su --command 'read -n 1 -s key; if [ "$key" == "g" ]; then su; fi;'
echo -n "W" 
sleep 0.09
echo -n "e" 
sleep 0.09
echo -n "l"
sleep 0.09
echo -n "c"
sleep 0.09
echo -n "o"
sleep 0.09 
echo -n "m"
sleep 0.09 
echo -n "e"  
sleep 0.09 

予想される結果:

[文字は次まで正しくエコーされます...]

[キーを押した]

Welcome

root@myuser:~#

ベストアンサー1

同様の質問に最も近いものは次のとおりです。

まず、inputprocというスクリプトを作成します。

read -n1

次に、mainscriptというスクリプトを作成します。

array=(W e l c o m e)
buf=0
while pgrep "inputproc" > /dev/null; do
    echo -n ${array[buf]}
    ((buf++))
    sleep 0.09
done
#Insert any commands you want to run afterwards here...

次に、このコマンドで実行します。

./mainscript & ./inputproc

まあ、それはあなたが望むものです。スクリプトだけではこれを行う方法が見つかりませんでしたが、驚くべきことにターミナルウィンドウだけでこれを行う方法を見つけました。

明らかなことに加えて、(whileループを使用して次のことを確認します。入力プロセス各echoコマンドの前に実行し、配列を使用して必要な文字を順番にエコーします。これは以下を実行することで実現できます。メインスクリプト実行中にバックグラウンドで実行入力プロセスレセプション。欠陥がないわけではありませんが、目的の結果に最も近いものに到達できると思います。

おすすめ記事