Shell-Script
使用者輸入 Shell 腳本語法錯誤
我是 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
我的程式碼有什麼問題?選擇不可用嗎?為什麼不應該在那裡?這是使用使用者輸入執行命令的正確方法嗎?
select
是bash
內置的,而不是sh
內置的。將第一行更改為:#!/bin/bash