[問題] 字串比較問題求救

看板Linux作者 (柯特)時間8年前 (2016/08/17 21:45), 編輯推噓2(2010)
留言12則, 3人參與, 最新討論串1/1
版上大大大家好 小弟最近正在學習Linux中,但遇到了一個數值比對問題無法解決,懇請版上大大指點迷 津 game() { if [ -n 'echo ${_game_list} | grep -i " PO"' ]; then _game_id =POKEMON if if [ -n 'echo ${_game_list} | grep -i " HG"' ]; then _game_id =HGAME if } 我在_game_list 中,輸入的是GOODPOK,原本預設會出來是POKEMON,但結果是HGAME。 但如果把 if [ -n 'echo ${_game_list} | grep -i " HG"' ]; then _game_id =HGAME if 去掉,值就是POKEMON,請問大大,是否有參數設定錯誤,導致判斷總是以後式決定呢? 還請不吝指點,萬分感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.139.160.90 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1471441531.A.34D.html

08/17 21:47, , 1F
抱歉,最後是fi, 不是if
08/17 21:47, 1F

08/17 22:15, , 2F
echo ${_game_list} ????
08/17 22:15, 2F

08/17 22:16, , 3F
這是說 echo ${_game_list}嗎?你程式碼多個空白
08/17 22:16, 3F

08/17 22:16, , 4F
再來若取變數,那不應該用 ' ' 單引號包起來
08/17 22:16, 4F

08/17 22:16, , 5F
要使用雙引號包起來才會展開變數內容
08/17 22:16, 5F

08/17 22:25, , 6F
if [ -n "$(echo ..." PO")" ]; then ...
08/17 22:25, 6F

08/18 00:00, , 7F
另外 $() 回覆想到原帖大概是需要反單引號非一般單引號
08/18 00:00, 7F

08/18 00:16, , 8F
是反單引號沒錯,手機排版打不出來
08/18 00:16, 8F

08/18 00:17, , 9F
了解,我再試試看不要用反單引號,用雙引號試試
08/18 00:17, 9F

08/18 11:08, , 10F
應該是說若你要執行命令,要用反單引號 or $() 才可以
08/18 11:08, 10F

08/18 11:09, , 11F
我一開始回應內容沒注意到你是需要執行外部命令
08/18 11:09, 11F

08/18 11:09, , 12F
所以 yvb 回應比較正確
08/18 11:09, 12F
文章代碼(AID): #1Nj6fxDD (Linux)