Shell-Script

使用者輸入 Shell 腳本語法錯誤

  • November 1, 2018

我是 shell 腳本的新手,想寫一個腳本來自動為我執行這個命令:

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

該腳本將要求使用者輸入,然後使用使用者的輸入執行命令。

所以,我參考了這些頁面:

http://www.aircrack-ng.org/doku.php?id=deauthentication - 用於 Aircrack 結構

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

我的程式碼有什麼問題?選擇不可用嗎?為什麼不應該在那裡?這是使用使用者輸入執行命令的正確方法嗎?

selectbash內置的,而不是sh內置的。將第一行更改為:

#!/bin/bash

引用自:https://unix.stackexchange.com/questions/288843