Fel*_*ggi 2 bash ubuntu trackpad
我目前已经分配了我的thinkvantage按钮来关闭点按我的触控板,但我想将其转换为开关的开关.
目前,这是我用来关闭它(或用CTRL打开)的bash命令:
gsettings set org.gnome.settings-daemon.peripherals.touchpad tap-to-click true
gsettings set org.gnome.settings-daemon.peripherals.touchpad tap-to-click false
Run Code Online (Sandbox Code Playgroud)
有没有办法让这个切换命令?换句话说,我是否将其变为条件bash语句.
大概是这样的:
#!/bin/bash
class=org.gnome.settings-daemon.peripherals.touchpad
name=tap-to-click
status=$(gsettings get "$class" "$name")
status=${status,,} # normalize to lower case; this is a modern bash extension
if [[ $status = true ]]; then
new_status=false
else
new_status=true
fi
gsettings set "$class" "$name" "$new_status"
Run Code Online (Sandbox Code Playgroud)
把它分解成碎片:
#!/bin/bash确保此脚本的解释器是bash,启用扩展语法,如[[ ]].$( )是"命令替换"; 这会运行一个命令,并替换该命令的输出.因此,如果输出是true,则status=$(...)变为status=true.${name,,}扩展了name将这些内容转换为全小写的内容,并且仅在较新版本的bash中可用.如果你想支持/bin/sh或更早版本的bash,请考虑status=$(printf '%s\n' "$status" | tr '[:upper:]' '[:lower:]')改为,或者只是删除这一行,如果输出gsettings get总是小写的话.[[ $status = true ]]依赖于bash扩展[[ ]](在其他现代ksh派生的shell中也可用),以避免引用的需要.如果你想要它可以使用#!/bin/sh,你可以使用它[ "$status" = true ].(注意==内部允许[[ ]],但在纯POSIX外壳内部是不允许的[ ] ;这就是为什么最好不要习惯使用它).请注意,空格在bash中很重要!foo = bar,foo= bar并且foo=bar是完全不同的陈述,并且它们中的所有三个与其他两个做不同的事情.一定要认识到从这个例子中复制的差异.
| 归档时间: |
|
| 查看次数: |
1754 次 |
| 最近记录: |