2017-04-17 65 views
0

這裏是我的腳本:TRUE/FALSE的if/then/else語句shell腳本

#!/bin/bash 
result=$(xfconf-query -c xsettings -p /Gtk/ShellShowsMenubar) 

if $result == "false" 
then 
    xfconf-query -c xsettings -p /Gtk/ShellShowsMenubar -n -t bool -s true 
else 
    xfconf-query -c xsettings -p /Gtk/ShellShowsMenubar -n -t bool -s false 
fi 

它輸出沒有錯誤,但它也不起作用。

+0

可以請你 '如果[$結果==假]嘗試' 請注意有每個字符和空格之間'FALSE'不是雙引號裏面 –

+0

[不要在使用$作業左側](https://github.com/koalaman/shellcheck/wiki/SC1066),並且始終將腳本複製粘貼到http://www.shellcheck.net/以修復語法違規 – Inian

+0

沒有顯示輸出? – Kruser

回答

4

你行:

if $result == "false" 

試圖運行一個名爲truefalse命令,這兩者都是在bash有效的關鍵字,這樣你就不會得到一個錯誤。額外的參數==false不起作用。

運行true返回一個「成功」退出代碼,所以當$resulttrue,你的代碼將遵循if分支,當它是false,它會跟着else分支。

要測試的字符串值,使用標準的語法:

if [ "$result" = false ] 

或慶典專用:

if [[ $result = false ]] 

==支持在bash,但你不妨使用標準運營商=無處不在。

-4
xfconf-query -c xsettings -p /Gtk/ShellShowsMenubar -T 
+0

請添加簡要說明。 – Paolo

+0

雖然這個答案可能確實解決了這個問題,但如果你解釋爲什麼它解決了這個問題以及爲什麼OP的原始方法不起作用,這將是更有幫助的。 – Zabuza