Linux bash 語法問題 - Linux

Table of Contents

#!/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

不太了解這個錯誤


--

All Comments

Connor avatarConnor2018-03-13
你兩個方括號裡面也要空格
Caitlin avatarCaitlin2018-03-13
bash的空格不是空格
Ursula avatarUrsula2018-03-18
if [ $(cat ~/.bashrc | grep python3) = *'...'* ]
Heather avatarHeather2018-03-20
你可以直接 if fgrep '$HOME/python3/bin' ~/.bashrc
Ethan avatarEthan2018-03-23
還有 [ abc = a*c ] 是 false , [[ abc = a*c ]] true
Una avatarUna2018-03-27
星號視為 glob 是雙方括號才支援,還有星號建議要跳脫
不然如果目錄下有匹配的檔名會被展開
Elizabeth avatarElizabeth2018-03-30
不就跟你說沒這檔案了嗎