タッチパッドを切り替えるためにこのスクリプトを作成しましたが(キーバインドします)、うまくいきません。このコードはなぜ動作しませんか?それでは、どうすればこの機能をよりエレガントに実行できますか?
#!/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
ベストアンサー1
書くとき
if [ "some string or other" ]
then
演算子は[
実行されず、some string or other
空でない文字列を見て、それが値であると言いますtrue
。
欲しい
if [ "`synclient | grep TouchpadOff | grep -o -E '[0-9]+'`" ]
またはもう少し現代的なもの
if [ "$(synclient | grep TouchpadOff | grep -o -E '[0-9]+')" ]
しかし、grepは終了コードを生成するので、実際にコマンドが文字列を生成したことを確認する必要はありません。
if synclient | grep TouchpadOff | grep -q -E '[0-9]+'
then
あなたが欲しいものをする必要があります。 synclientの出力形式はわかりませんが、問題なく2つのgrepを1つにマージできることを願っています。