[問題] shell script

作者: gmotwm2001 (小馬怪)   2017-09-21 20:27:42
大家好~我是shell script 新手
最近寫一個小程式,是尋找有沒有目錄檔,可是執行都錯誤,不知道哪裡有錯
有網站在教語法這方面嗎? 謝謝
我在 /建一個目錄program 並在目錄下寫一個sh檔,是找有沒有var目錄,有的話就
echo,但我執行程式 sh find.sh 產生以下問題,不知道是甚麼問題哪裡寫錯!
find.sh: line 11: if[-e /var]: 沒有此一檔案或目錄
find.sh: line 13: syntax error near unexpected token `then'
find.sh: line 13: `then'
請問要怎麼直接 打/program/find.sh 就可以執行程式,不用再切換到program檔
再打sh find.sh 謝謝
#!/bin/bash
#program:
#use rsync copy webmailinfomation
#history:
#2017/09/21
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
File="/var"
if[-e $File]
then
echo $File
else
echo "hi"
fi
作者: freemantw (阿倫)   2017-09-21 20:59:00
教學網站可以參考[鳥哥的Linux私房菜]你錯誤的原因是沒有空格,把錯誤那行貼到google searchhttps://goo.gl/tTMf8p
作者: filiaslayers (司馬雲)   2017-09-21 21:22:00
不是換行嗎?then不用換行
作者: shiyeh (shiyeh)   2017-09-21 22:30:00
鳥哥看一看吧...
作者: gmotwm2001 (小馬怪)   2017-09-21 22:40:00
是哪裡沒空格,我有試過then不換行還是錯@@
作者: goldie (阿良)   2017-09-21 22:48:00
括號裡面要空一格if 後面也要要空一格。
作者: mars90226 (火星人)   2017-09-21 23:32:00
用 chmod a+x program.sh 把執行權限打開
作者: bluecadence (Maxwell's demon)   2017-09-21 23:47:00
所以你到底是用 sh 還是 bash?你的script #!/bin/bash 然後用 sh 當 interpreter?
作者: gmotwm2001 (小馬怪)   2017-09-21 23:51:00
我是照鳥哥打的@[email protected] if 判斷式是照其他網頁
作者: patrick521 (派星星)   2017-09-22 00:37:00
如果是redhat系列,sh是link到bash沒問題,我也覺得是空格問題
作者: dou0228 (7777)   2017-09-22 08:24:00
空格問題,因為 if [ -e "xxxx" 是傳給 if 三個參數如果是 if[-e $file 那就是 if[-e 是執行檔,$file是參數其實是有一個 [ 執行檔的https://pastebin.com/iEKkU8F6
作者: kenduest (小州)   2017-09-22 09:33:00
目前用 bash 的 [ 是內建命令了,早期 sh 年代才會呼叫到外部的 [ 那個程式檔案
作者: chang505 (眼線)   2017-09-22 09:57:00
先把格式打對來
作者: kenduest (小州)   2017-09-22 11:45:00
你需要是 ... --delete /a/. /b 這個語法吧,不是用 ** 只是 match a 該目錄內單層而已
作者: gmotwm2001 (小馬怪)   2017-09-22 13:36:00
k大您好,我改好了~*跟 /.是差在哪邊呢?
作者: kenduest (小州)   2017-09-22 16:26:00
你可以重新測試,在 rsync 前面命令多加一個 echo可以看出萬用字元展開情況,就會知道原因了

Links booklink

Contact Us: admin [ a t ] ucptt.com