사용자 입력 쉘 스크립트 구문 오류

사용자 입력 쉘 스크립트 구문 오류

저는 쉘 스크립팅 등을 처음 접했고 자동으로 이 명령을 실행하는 스크립트를 작성하고 싶었습니다.

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

관련 정보