[问题] 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