[問題] shell script

看板Linux作者 (小馬怪)時間8年前 (2017/09/21 20:27), 8年前編輯推噓9(9017)
留言26則, 11人參與, 最新討論串3/3 (看更多)
大家好~我是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

09/21 20:59, , 1F
教學網站可以參考[鳥哥的Linux私房菜]
09/21 20:59, 1F

09/21 21:01, , 2F
你錯誤的原因是沒有空格,把錯誤那行貼到google search
09/21 21:01, 2F

09/21 21:02, , 3F
09/21 21:02, 3F

09/21 21:22, , 4F
不是換行嗎?then不用換行
09/21 21:22, 4F

09/21 22:30, , 5F
鳥哥看一看吧...
09/21 22:30, 5F

09/21 22:40, , 6F
是哪裡沒空格,我有試過then不換行還是錯@@
09/21 22:40, 6F

09/21 22:48, , 7F
括號裡面要空一格
09/21 22:48, 7F

09/21 22:48, , 8F
if 後面也要要空一格。
09/21 22:48, 8F

09/21 23:32, , 9F
用 chmod a+x program.sh 把執行權限打開
09/21 23:32, 9F

09/21 23:47, , 10F
所以你到底是用 sh 還是 bash?
09/21 23:47, 10F

09/21 23:48, , 11F
你的script #!/bin/bash 然後用 sh 當 interpreter?
09/21 23:48, 11F

09/21 23:51, , 12F
我是照鳥哥打的@_@ if 判斷式是照其他網頁
09/21 23:51, 12F

09/22 00:37, , 13F
如果是redhat系列,sh是link到bash沒問題,我也覺得是
09/22 00:37, 13F

09/22 00:37, , 14F
空格問題
09/22 00:37, 14F

09/22 08:24, , 15F
空格問題,因為 if [ -e "xxxx" 是傳給 if 三個參數
09/22 08:24, 15F

09/22 08:24, , 16F
如果是 if[-e $file 那就是 if[-e 是執行檔,$file是參數
09/22 08:24, 16F

09/22 08:25, , 17F
其實是有一個 [ 執行檔的
09/22 08:25, 17F

09/22 08:32, , 18F

09/22 09:33, , 19F
目前用 bash 的 [ 是內建命令了,早期 sh 年代才會
09/22 09:33, 19F

09/22 09:33, , 20F
呼叫到外部的 [ 那個程式檔案
09/22 09:33, 20F

09/22 09:57, , 21F
先把格式打對來
09/22 09:57, 21F
剛剛修正空格後已經可以執行,想再請問我將echo $File改為同步備份指令如下 rsync -av --delete /a/* /b 將a資料夾底下的資料備份到b資料夾,可是a資料夾中的 資料刪除後,b資料夾原本複製的資料也應該要刪除掉,可是他沒有刪除,只有增加才會 備份,想請問指令是否有打錯(我查網路是只要家delete就可以),謝謝! b ※ 編輯: gmotwm2001 (140.117.166.187), 09/22/2017 10:28:30

09/22 11:45, , 22F
你需要是 ... --delete /a/. /b 這個語法吧,不是用 *
09/22 11:45, 22F

09/22 11:46, , 23F
* 只是 match a 該目錄內單層而已
09/22 11:46, 23F

09/22 13:36, , 24F
k大您好,我改好了~*跟 /.是差在哪邊呢?
09/22 13:36, 24F

09/22 16:26, , 25F
你可以重新測試,在 rsync 前面命令多加一個 echo
09/22 16:26, 25F

09/22 16:26, , 26F
可以看出萬用字元展開情況,就會知道原因了
09/22 16:26, 26F
文章代碼(AID): #1Pmx101G (Linux)
討論串 (同標題文章)
文章代碼(AID): #1Pmx101G (Linux)