简体   繁体   English

BASH脚本可在PI模式之间切换

[英]BASH script to switch between PI modes

I'm trying to create a BASH script for my Pi3 along with a desktop icon that will change the amount of gpu_mem allocated and rename the icon to the mode that is not in use. 我正在尝试为Pi3创建一个BASH脚本以及一个桌面图标,该图标将更改分配的gpu_mem数量,并将图标重命名为未使用的模式。

#!/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

Now the memory allocation part of the script works fine, but when I execute the line of code below for testing purposes: 现在,脚本的内存分配部分可以正常工作,但是当我出于测试目的执行以下代码行时:

sed -i 's,^\(Name[en_GB.UTF-8]=\).*,\1'Desktop Mode',' \
/home/pi/Desktop/GPUMode.desktop

I get the error: 我得到错误:

 sed: -e expression #1, char 34: unterminated `s' command 

Any Ideas? 有任何想法吗?

Try this instead using GNU awk instead of GNU sed for inplace editing: 尝试使用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

Copy your files before trying it of course... 当然,请先复制文件,然后再尝试...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM