Enterキーを待たずにシェルスクリプトを読む

Enterキーを待たずにシェルスクリプトを読む

私は本質的に2つのことだけを行う小さなbashスクリプトを書いています。 2つの更新コマンドを同時に実行し、キーバインディングを一覧表示します。たとえば、同じ方法で変数chmod +xも機能します。using +x私が望む方法は、入力するとbash filename.sh -Y希望のキーバインディングを取得し、に置き換えると-Y2-Xつの更新コマンドを実行することです。どうすればいいですか?

編集これを言及するのを忘れましたが、正直なところ、変数にハイフンがあるかどうかは問題ではありません。私の投稿のタイトルの意味は、まずEnterキーを押さずに-Yinをどのように使用しますか?bash filename.sh -Y現在私が使用しているスクリプトです。

#!/bin/sh

read var

if [ var == upd ]
then 
    sudo pacman -Syyu; yay -Syu
fi

upd実行後にEnterキーを押すと完璧に動作しますbash filename.sh。同じ入力をどのように取得できますかbash filename.sh upd

答え1

コマンドラインでコマンドの後の最初の単語に自動的に設定されるように、コマンドライン引数変数などを$1使用$2する必要があります。 2番目の言葉です。 3回目です。コマンドラインで引数の数を含む変数を使用して、引数があるかどうかを確認することもできます。$3$1$2$3$#

したがって、スクリプトは次のようになります。

#!/bin/bash

if [ $# -gt 0 ]; then
    var="$1"
else
    read var
fi

if [ "$var" == upd ]; then 
    sudo pacman -Syyu; yay -Syu
fi

注:スペースを含むことができる変数は常に引用符で囲む必要があります。特に、その変数がユーザー入力からのものである場合はさらにそうです。

関連情報