[問題] Linux bash 語法問題

看板Linux作者 (gecer)時間6年前 (2018/03/12 20:46), 6年前編輯推噓4(404)
留言8則, 4人參與, 6年前最新討論串1/1
#!/bin/bash if [$(cat ~/.bashrc |grep python3)=*'$HOME/python3/bin'*];then sudo source ~/.bashrc python3 -V else echo "" echo "" echo "You need to add \"export PATH=\$PATH:$HOME/python3/bin into ~/.bashrc\"" echo "Then execute \"source ~/.bashrc\"" fi 小弟預期用紅字部分來看 bashrc內有無 python3 字眼 預期不是 空字串就是包含 '$HOME/python3/bin' 但是執行結果卻出現 ./python3_install2: line 2: [=*$HOME/python3/bin*]: No such file or directory 不太了解這個錯誤 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.28.43 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1520858812.A.1CA.html ※ 編輯: gecer (111.255.28.43), 03/12/2018 20:47:16 ※ 編輯: gecer (111.255.28.43), 03/12/2018 20:50:54

03/12 20:53, 6年前 , 1F
你兩個方括號裡面也要空格
03/12 20:53, 1F

03/12 21:55, 6年前 , 2F
bash的空格不是空格
03/12 21:55, 2F

03/12 22:31, 6年前 , 3F
if [ $(cat ~/.bashrc | grep python3) = *'...'* ]
03/12 22:31, 3F

03/12 22:33, 6年前 , 4F
你可以直接 if fgrep '$HOME/python3/bin' ~/.bashrc
03/12 22:33, 4F

03/12 22:41, 6年前 , 5F
還有 [ abc = a*c ] 是 false , [[ abc = a*c ]] true
03/12 22:41, 5F

03/12 22:43, 6年前 , 6F
星號視為 glob 是雙方括號才支援,還有星號建議要跳脫
03/12 22:43, 6F

03/12 22:43, 6年前 , 7F
不然如果目錄下有匹配的檔名會被展開
03/12 22:43, 7F

03/12 23:26, 6年前 , 8F
不就跟你說沒這檔案了嗎
03/12 23:26, 8F
文章代碼(AID): #1QfdQy7A (Linux)