当前位置: 技术问答>linux和unix
shell脚本出错
来源: 互联网 发布时间:2016-10-12
本文导语: #! /bin/bash find() { for file in 'ls $1' do if [ -d $1/$file ];then find $1/$file else echo $1/$file fi done } DIR=~/MyTest find $DIR 打印MyTest目录所以文件,这哪里错了? 报了这错误 pubuntu@pubuntu:~$ sh fa.sh [: 14: /home/pubuntu/MyTest/ls: u...
#! /bin/bash
find()
{
for file in 'ls $1'
do
if [ -d $1/$file ];then
find $1/$file
else
echo $1/$file
fi
done
}
DIR=~/MyTest
find $DIR
打印MyTest目录所以文件,这哪里错了?
报了这错误
pubuntu@pubuntu:~$ sh fa.sh
[: 14: /home/pubuntu/MyTest/ls: unexpected operator
|
1.
把
for file in 'ls $1'
改成
for file in `ls $1`
正确的是反单引号`` 而非单引号''
2.推荐不要使用和系统命令一样名字的函数名
把
for file in 'ls $1'
改成
for file in `ls $1`
正确的是反单引号`` 而非单引号''
2.推荐不要使用和系统命令一样名字的函数名
|
主席说得好,你不能确定他用的是系统的find还是你的find
用反引号
|
或者lz在使用sh的时候,加入-x参数,进行调试!
sh -x fa.sh 一看就知道了。
sh -x fa.sh 一看就知道了。
|
shell的调试确实不像高级语言那样方便,不过不是没有办法。
你可以用sh 的选项来比如-n检查语法错误,像LZ例子用sh -n cccccc.sh就能测试出来。
"-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个
命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的
是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。
你可以用sh 的选项来比如-n检查语法错误,像LZ例子用sh -n cccccc.sh就能测试出来。
"-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本的过程中把它实际执行的每一个
命令行显示出来,并且在行首显示一个"+"号。 "+"号后面显示的是经过了变量替换之后的命令行的内容,有助于分析实际执行的
是什么命令。 “-x”选项使用起来简单方便,可以轻松对付大多数的shell调试任务,应把其当作首选的调试手段。
|
还有一个比较常用的方法就是多用
echo
打印你觉得有问题的地方。
不过交付脚本的时候还得一个一个删也是很麻烦的事。
echo
打印你觉得有问题的地方。
不过交付脚本的时候还得一个一个删也是很麻烦的事。