You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sed报错:unknown command: `'` 脚本文件编辑操作故障排查

问题解决:sed命令报错unknown command: ''`

错误原因

你的脚本第四行存在引号冲突问题:外层用双引号包裹adb shell命令,内部sed替换表达式又使用了未转义的双引号,导致本地shell提前解析闭合引号,破坏了sed命令的语法结构,最终触发报错。同时,$(...)形式的MAC地址获取逻辑直接嵌套在adb shell命令中,也加剧了解析混乱。

修复方案

  1. 先在本地获取并处理MAC地址,存入变量,避免嵌套解析的问题;
  2. 转义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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:30:47