看板 Linux 關於我們 聯絡資訊
大家好~我是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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.238.53.62 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1505996864.A.050.html
freemantw: 教學網站可以參考[鳥哥的Linux私房菜] 09/21 20:59
freemantw: 你錯誤的原因是沒有空格,把錯誤那行貼到google search 09/21 21:01
freemantw: https://goo.gl/tTMf8p 09/21 21:02
filiaslayers: 不是換行嗎?then不用換行 09/21 21:22
shiyeh: 鳥哥看一看吧... 09/21 22:30
gmotwm2001: 是哪裡沒空格,我有試過then不換行還是錯@@ 09/21 22:40
goldie: 括號裡面要空一格 09/21 22:48
goldie: if 後面也要要空一格。 09/21 22:48
mars90226: 用 chmod a+x program.sh 把執行權限打開 09/21 23:32
bluecadence: 所以你到底是用 sh 還是 bash? 09/21 23:47
bluecadence: 你的script #!/bin/bash 然後用 sh 當 interpreter? 09/21 23:48
gmotwm2001: 我是照鳥哥打的@_@ if 判斷式是照其他網頁 09/21 23:51
patrick521: 如果是redhat系列,sh是link到bash沒問題,我也覺得是 09/22 00:37
patrick521: 空格問題 09/22 00:37
dou0228: 空格問題,因為 if [ -e "xxxx" 是傳給 if 三個參數 09/22 08:24
dou0228: 如果是 if[-e $file 那就是 if[-e 是執行檔,$file是參數 09/22 08:24
dou0228: 其實是有一個 [ 執行檔的 09/22 08:25
dou0228: https://pastebin.com/iEKkU8F6 09/22 08:32
kenduest: 目前用 bash 的 [ 是內建命令了,早期 sh 年代才會 09/22 09:33
kenduest: 呼叫到外部的 [ 那個程式檔案 09/22 09:33
chang505: 先把格式打對來 09/22 09:57
剛剛修正空格後已經可以執行,想再請問我將echo $File改為同步備份指令如下 rsync -av --delete /a/* /b 將a資料夾底下的資料備份到b資料夾,可是a資料夾中的 資料刪除後,b資料夾原本複製的資料也應該要刪除掉,可是他沒有刪除,只有增加才會 備份,想請問指令是否有打錯(我查網路是只要家delete就可以),謝謝! b ※ 編輯: gmotwm2001 (140.117.166.187), 09/22/2017 10:28:30
kenduest: 你需要是 ... --delete /a/. /b 這個語法吧,不是用 * 09/22 11:45
kenduest: * 只是 match a 該目錄內單層而已 09/22 11:46
gmotwm2001: k大您好,我改好了~*跟 /.是差在哪邊呢? 09/22 13:36
kenduest: 你可以重新測試,在 rsync 前面命令多加一個 echo 09/22 16:26
kenduest: 可以看出萬用字元展開情況,就會知道原因了 09/22 16:26