首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在新的shell脚本中处理字符串操作(并测试grep的结果)

在新的shell脚本中处理字符串操作(并测试grep的结果)
EN

Unix & Linux用户
提问于 2019-06-29 00:53:30
回答 1查看 84关注 0票数 1

我写了这个脚本来切换我的触屏(我会把它键绑定),但是它不能工作。为什么这个高级代码不能工作?怎么才能更优雅地完成这个功能?

代码语言:javascript
复制
#!/bin/sh

if [ "synclient | grep TouchpadOff | grep -o -E '[0-9]+'" ]
then
        synclient TouchpadOff=0
        notify-send "Touchpad Enabled"
else
        synclient TouchpadOff=1
        notify-send "Touchpad Disabled"
fi
EN

回答 1

Unix & Linux用户

发布于 2019-06-29 01:44:17

当你写

代码语言:javascript
复制
 if [ "some string or other" ]
 then

[运算符不运行some string or other,它只看到一个非空字符串,并表示这是一个true值。

你想要的

代码语言:javascript
复制
 if [ "`synclient | grep TouchpadOff | grep -o -E '[0-9]+'`" ] 

或者说更现代

代码语言:javascript
复制
if [ "$(synclient | grep TouchpadOff | grep -o -E '[0-9]+')" ]

但是,实际上不需要查看命令是否像grep生成退出代码那样生成字符串。

代码语言:javascript
复制
if synclient | grep TouchpadOff | grep -q -E '[0-9]+'
then

应该做你想做的事。我不知道synclient的输出格式,但我希望您可以将这两个grep合并为一个,而无需花费太多的精力。

票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/527585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档