日期:2014-05-16  浏览次数:20688 次

100分,sh文件为什么不能执行?
test.sh文件只有这一句话

if   [   -f   load.sh   ];   then
    echo   "Cannot   find "
fi

说fi附近语法错误


------解决方案--------------------
我帮你试了一下,没错啊

要去你改成
if [ -f load.sh ]
then
echo "Cannot find "
fi
看看

------解决方案--------------------
有加 #!/bin/sh 么
------解决方案--------------------
试过了,没问题!不过脚本没意义:
这不是想这样啊?
if [ -f load.sh ]; then
echo "find, run load.sh "
else
echo "Cannot find "
fi

------解决方案--------------------
权限问题
------解决方案--------------------
楼主这段代码是windows下的

vi 文件
将每行后的^M符合删除
------解决方案--------------------
在每个脚本的开头都使用 "#! ",这意味着告诉你的系统这个文件的执行需要指定一个解
释器.#!实际上是一个2 字节[1]的魔法数字,这是指定一个文件类型的特殊标记, 换句话说, 在
这种情况下,指的就是一个可执行的脚本(键入man magic 来获得关于这个迷人话题的更多详细
信息).在#!之后接着是一个路径名.这个路径名指定了一个解释脚本中命令的程序,这个程序可
以是shell,程序语言或者是任意一个通用程序.这个指定的程序从头开始解释并且执行脚本中
的命令(从#!行下边的一行开始),忽略注释.[2]
如:
1 #!/bin/sh
2 #!/bin/bash
3 #!/usr/bin/perl
4 #!/usr/bin/tcl
5 #!/bin/sed -f
6 #!/usr/awk -fh

然后将文件加上可执行的权限。
输入./test.sh 执行
------解决方案--------------------
检查一下每行结束的换行符是不是Windows的换行格式。。
最好直接用VI编写
------解决方案--------------------
用ue转换一下格式就好了。
------解决方案--------------------
看你的shell文件有没有被认识到。 老牛 写了很多头文件。
写个更简单的echo ...


------解决方案--------------------
格式问题吧