[英]BASH script to switch between PI modes
我正在嘗試為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
現在,腳本的內存分配部分可以正常工作,但是當我出於測試目的執行以下代碼行時:
sed -i 's,^\(Name[en_GB.UTF-8]=\).*,\1'Desktop Mode',' \
/home/pi/Desktop/GPUMode.desktop
我得到錯誤:
sed: -e expression #1, char 34: unterminated `s' command
有任何想法嗎?
嘗試使用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
當然,請先復制文件,然后再嘗試...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.