Linux 用于在PI模式之间切换的BASH脚本
我正在尝试为我的Pi3创建一个BASH脚本以及一个桌面图标,该图标将更改分配的gpu内存量,并将图标重命名为未使用的模式Linux 用于在PI模式之间切换的BASH脚本,linux,bash,sed,raspbian,Linux,Bash,Sed,Raspbian,我正在尝试为我的Pi3创建一个BASH脚本以及一个桌面图标,该图标将更改分配的gpu内存量,并将图标重命名为未使用的模式 #!/bin/bash s1=$(grep gpu_mem /boot/config.txt) s2="gpu_mem=156" if [ "$s1" == "$s2" ] then sudo sed -i 's,^\(gpu_mem=\).*,\1'512',' /boot/config.txt
#!/bin/bash
s1=$(grep gpu_mem /boot/config.txt)
s2="gpu_mem=156"
if [ "$s1" == "$s2" ]
then
sudo sed -i 's,^\(gpu_mem=\).*,\1'512',' /boot/config.txt
sed -i 's,^\(Name[en_GB.UTF-8]=\).*,\1'Desktop Mode',' \
/home/pi/Desktop/GPUMode.desktop
else
sudo sed -i 's,^\(gpu_mem=\).*,\1'156',' /boot/config.txt
sed -i 's,^\(Name[en_GB.UTF-8]=\).*,\1'Game Mode',' \
/home/pi/Desktop/GPUMode.desktop
fi
现在,脚本的内存分配部分工作正常,但是当我执行下面的代码行进行测试时:
sed -i 's,^\(Name[en_GB.UTF-8]=\).*,\1'Desktop Mode',' \
/home/pi/Desktop/GPUMode.desktop
我得到一个错误:
有什么想法吗?尝试使用GNU awk代替GNU sed进行就地编辑:
sudo awk -i inplace '
BEGIN { FS=OFS="="; game_mem=156; desk_mem=512 }
(ARGIND == 1) && ($1 == "gpu_mem") {
if ( $2 == game_mem ) {
$2 = desk_mem
mode = "Desktop"
}
else {
$2 = game_mem
mode = "Game"
}
}
(ARGIND == 2) && ($1 == "Name[en_GB.UTF-8]") {
$2 = mode " Mode"
}
{ print }
' /boot/config.txt /home/pi/Desktop/GPUMode.desktop
在尝试之前先复制文件当然…没什么问题<代码>[是元字符,请使用
\[
代替…不能在单引号内使用单引号,请使用\x27
代替。桌面模式中的空格导致错误消息显示…工作正常,非常感谢
sudo awk -i inplace '
BEGIN { FS=OFS="="; game_mem=156; desk_mem=512 }
(ARGIND == 1) && ($1 == "gpu_mem") {
if ( $2 == game_mem ) {
$2 = desk_mem
mode = "Desktop"
}
else {
$2 = game_mem
mode = "Game"
}
}
(ARGIND == 2) && ($1 == "Name[en_GB.UTF-8]") {
$2 = mode " Mode"
}
{ print }
' /boot/config.txt /home/pi/Desktop/GPUMode.desktop