私は本質的に2つのことだけを行う小さなbashスクリプトを書いています。 2つの更新コマンドを同時に実行し、キーバインディングを一覧表示します。たとえば、同じ方法で変数chmod +x
も機能します。using +x
私が望む方法は、入力するとbash filename.sh -Y
希望のキーバインディングを取得し、に置き換えると-Y
2-X
つの更新コマンドを実行することです。どうすればいいですか?
編集これを言及するのを忘れましたが、正直なところ、変数にハイフンがあるかどうかは問題ではありません。私の投稿のタイトルの意味は、まずEnterキーを押さずに-Y
inをどのように使用しますか?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
注:スペースを含むことができる変数は常に引用符で囲む必要があります。特に、その変数がユーザー入力からのものである場合はさらにそうです。