LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 664|回复: 1

求精简一下这个脚本

[复制链接]
发表于 2010-4-25 19:30:14 | 显示全部楼层 |阅读模式
[PHP]#!/bin/bash

#默认音量通道
MIXER="Master"
#默认步长
VOLSTEP=8

function help  {
cat << EOF
用法: mmkey [MIXER] [command]
   MIXER : 音量通道(默认Master)
command:
   vol-up : 提升音量
   vol-down : 降低音量
   toggle : 静音开关
EOF
}

# Get current volume.
function get_volume
{
    current_volume=$(amixer get $MIXER  | grep 'Front Left:'| sed -e 's/^[^\[]*//' -e 's/^.//' -e 's/%.*$//')
    status=$(amixer get $MIXER | tr -d '[]' | grep "layback.*%" |head -n1 |awk '{print $7}')
}

# Set volume.
function set_volume
{
        get_volume
        dest_volume=$((current_volume+VOLSTEP))
        # [ dest_volume < 0 ] && dest_volume=0
        # [ dest_volume > 100 ] && dest_volume=100
        if [[ dest_volume -lt 0 ]]; then
                dest_volume=0
        elif [[ dest_volume -gt 100 ]]; then
                dest_volume=100
        fi

        amixer set $MIXER  $dest_volume%  -q
        notify_percentage
}

function toggle_mute
{
        get_volume
        dest_volume=$current_volume
        if [ $status == off ]; then
                #关闭静音
                notify_percentage
                #notify-send "Volume" -i notification-audio-volume-$icon -h int:valuecurrent_volume -h string:x-canonical-private-synchronous:
        else
                #启用静音
                notify-send "Volume" -i notification-audio-volume-muted -h int:value:0 -h string:x-canonical-private-synchronous:
        fi
                amixer set $MIXER toggle -q
}

function  notify_percentage
{
        #icon='medium'
        #[ $dest_volume < 30 ] && icon='low'
        #[ $dest_volume > 70 ] && icon='high'
        if [[ dest_volume -lt 30 ]]; then
                icon='low'
        elif [[ dest_volume -gt 70 ]]; then
                icon='high'
        else
                icon='medium'
        fi

        notify-send "Volume" -i notification-audio-volume-$icon -h int:valuedest_volume -h string:x-canonical-private-synchronous:
}
########################################
# 主函数
########################################
[ $# -gt 2 ] && help && exit 1
parameter_1=$1
[ $# == 2  ] && MIXER=$1 && parameter_1=$2

case $parameter_1 in
        vol-up ) set_volume ;;
        vol-down ) VOLSTEP=-$VOLSTEP; set_volume ;;
        toggle ) toggle_mute ;;
        * ) help;;
esac[/PHP]
要求越精简越好 能不用if就不用if
发表于 2010-4-25 22:39:49 | 显示全部楼层
看了一眼就出去的飘过...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表