用户输入 Shell 脚本语法错误

用户输入 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=取消验证- 用于气隙结构

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 无法使用吗?为什么done不应该在那里?这是使用用户输入运行命令的正确方法吗?

答案1

selectbash内置的,不是sh内置的。将第一行更改为:

#!/bin/bash

相关内容