gpt4 book ai didi

linux - 我的 shell 脚本正在做相反的事情

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:32:58 28 4
gpt4 key购买 nike

我是新来的,我年纪大了一点。我决定开始学习 shell 脚本,因为我喜欢 Linux,它让我有理由在家里自动完成很多任务。我想学习编程,也许有一天会换工作。

无论如何,我编写了一个脚本来提高、降低和静音我的音量并发送通知。但是当我静音时,它会显示音量,当它取消静音(正在播放声音)时,它会在通知中显示“静音”。它正在做相反的事情。

这是代码:link

#!/bin/bash
# Manage volume and send notify with dunst

msgId="777" # unique ID for dunstify to replace the notification
getvol=$(amixer get Master | grep % | cut -d '[' -f 2 | cut -d ']' -f 1) # get vol %
muted=$(amixer get Master | grep % | cut -d '[' -f 4 | cut -d ']' -f 1 ) # check if on/off

function notification {
dunstify -u low -r $msgId "$getvol"
}

case $1 in
up)
amixer sset Master 3%+ > /dev/null
notification
;;
down)
amixer sset Master 3%- > /dev/null
notification
;;
mute)
amixer sset Master toggle > /dev/null
if [ $muted == "off" ]; then
dunstify -u low -r $msgId "Mute"
else
notification
fi
;;
esac

它是这样工作的:

./vol.sh up<​​/p>

./vol.sh 下

./vol.sh静音(问题出在这里)

我可以将 if [ $muted == "off"] 更改为 if [ $muted == "on"],但这对我来说没有意义。

PS:需要说明的是,在amixer get Master中显示时,表示声音关闭,而不是静音状态关闭。

谢谢!也请随时给我其他提示。

最佳答案

我在实际打开或关闭静音之前设置了静音变量。因此脚本会在信息更改之前获取信息。

amixer sset Master toggle >/dev/null 之后将 muted= 行放在 case mute 中解决了这个问题。这里:

mute)
amixer sset Master toggle > /dev/null
muted=$(amixer get Master | grep % | cut -d '[' -f 4 | cut -d ']' -f 1 )
if [ $muted == "off" ]; then

关于linux - 我的 shell 脚本正在做相反的事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54483871/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com