sed报错:unknown command: `'` 脚本文件编辑操作故障排查
问题解决:sed命令报错
unknown command: ''` 错误原因
你的脚本第四行存在引号冲突问题:外层用双引号包裹adb shell命令,内部sed替换表达式又使用了未转义的双引号,导致本地shell提前解析闭合引号,破坏了sed命令的语法结构,最终触发报错。同时,$(...)形式的MAC地址获取逻辑直接嵌套在adb shell命令中,也加剧了解析混乱。
修复方案
- 先在本地获取并处理MAC地址,存入变量,避免嵌套解析的问题;
- 转义sed命令内部的双引号,确保本地shell将整个adb shell命令识别为单一字符串。
修改后的完整脚本
# 本地提前获取并处理MAC地址 MAC_ADDR=$(cat /sys/class/net/wlan0/address | sed 's/.\{9\}//' | sed 's/^/00:e0:4c:/') adb shell "sudo cp /boot/uEnv.txt /home/rock/" adb shell "sudo sed -i '$s/$/\n/' /home/rock/uEnv.txt" adb shell "sudo sed -i '$i extraargs=rtl8723ds.rtw_initmac=\"MACAUXTXT\"' /home/rock/uEnv.txt" # 转义内部双引号并引用预定义变量 adb shell "sudo sed -i \"s/MACAUXTXT/${MAC_ADDR}/\" /home/rock/uEnv.txt" adb shell "sudo cp /home/rock/uEnv.txt /boot/" adb shell "sudo cp /home/rock/Service/20-rock.conf /usr/lib/NetworkManager/conf.d/" adb shell "sudo rm /home/rock/Service/rockpi-backup.sh" adb shell "sudo rm /home/rock/Service/20-rock.conf" adb shell "sudo rm /home/rock/uEnv.txt"
额外说明
- 将MAC地址处理逻辑提取到本地执行,既避免了嵌套shell的解析冲突,也提升了脚本可读性;
- 使用
\"转义内部双引号,确保adb shell能接收到完整的sed命令。
内容的提问来源于stack exchange,提问作者Lukas Lujan Moreira
相关产品推荐
相关产品推荐

