一个shell语法相关的问题

如题,最近在折腾自己的树莓派,然后打算给屏幕写个安装驱动用的自动化脚本。

其中类似以下段落的部分,执行时报告类似install.sh: 第 xx 行:[: 参数太多这样的错误。

if [ grep -q "# hdmi_force_hotplug=1" /boot/config.txt ]; then ←报错的行
sudo sed -i 's/# hdmi_force_hotplug=1/hdmi_force_hotplug=1/' /boot/config.txt
else
sudo echo "hdmi_force_hotplug=1" >> /boot/config.txt
fi

因为我不懂法语,之前的字幕都是我编的……不对串戏了,因为我基本上也不懂shell语法,所以想请教一下,具体是哪里出了错?

把第一行左右的中括号删掉应该就可以了。如果是 [ 的话,内部会预期一个比较/测试操作符。

https://www.runoob.com/w3cnote/shell-summary-brackets.html

1 Like

搞定。非常感谢~

[ 其实是一个命令,基本等同于test命令,用于判断一些表达式和文件属性,对于调用外部程序是否成功则不用这个命令来做

1 Like