分页: 1 / 1

初学shell,书上的if小程序为什么出错?

发表于 : 2011-11-21 22:02
double_crane
照书上抄的,关于if的用法

#!/bin/bash
for filename in 'ls'
do
cp $filename ./backup/$filename
if ( $? -ne 0 ) then
echo "copy failed"
fi
done

程序的意思就是把一个文件夹的内容在子目录做备份
为什么执行报错
cp: 无法获取"ls" 的文件状态(stat): 没有那个文件或目录
./if: 行 5: 1: 未找到命令

开始怀疑是子目录没创建,但是我 建一个 backup的目录,还是一样报错啊?
这是什么情况啊?

还有,我发现这书上写的 if 有点乱;
if 后面 有时是 小括号 有时是中括号
有时括号后面有 封号,有时后面又没有封号
这是怎么回事?

谢谢啦

Re: 初学shell,书上的if小程序为什么出错?

发表于 : 2011-11-21 22:07
cuihao
for filename in `ls`

Re: 初学shell,书上的if小程序为什么出错?

发表于 : 2011-11-21 22:14
cuihao
小括号貌似是C语法,不能你那么写的:

代码: 全选

if (($? != 0 )); then

Re: 初学shell,书上的if小程序为什么出错?

发表于 : 2011-11-22 0:28
double_crane
谢谢啊,是应该反杠号;
封号是有的,买的书,写的不对啊,挫,还清华出版社的...

中括号有效,但是提示如下
cp: 略过目录"backup"
copy failed

小括号也能用,有效,提示
./if: 行 6: 0: 未找到命令
./if: 行 6: 0: 未找到命令
./if: 行 6: 0: 未找到命令
./if: 行 6: 0: 未找到命令
cp: 略过目录"backup"
./if: 行 6: 1: 未找到命令
./if: 行 6: 0: 未找到命令
./if: 行 6: 0: 未找到命令
./if: 行 6: 0: 未找到命令

这个是什么意思啊,
我看到明明复制成功了的

Re: 初学shell,书上的if小程序为什么出错?

发表于 : 2011-11-22 6:41
cuihao
copy目录要用:

代码: 全选

copy -r 路径
if的问题嘛,我还没搞清楚。

其实我不太懂shell脚本 :em02

Re: 初学shell,书上的if小程序为什么出错?

发表于 : 2011-11-22 8:07
cao627
楼主
if ( $? -ne 0 ) then
是什么意思?解释解释
我也学学

Re: 初学shell,书上的if小程序为什么出错?

发表于 : 2011-11-22 21:44
naturalaw
結構不對.

代码: 全选

if [ ] ;then
fi
少了分號.
要不then你就另起一行寫.

Re: 初学shell,书上的if小程序为什么出错?

发表于 : 2011-11-22 21:46
naturalaw
double_crane 写了:照书上抄的,关于if的用法

#!/bin/bash
for filename in 'ls'
do
cp $filename ./backup/$filename
if ( $? -ne 0 ) then
echo "copy failed"
fi
done

程序的意思就是把一个文件夹的内容在子目录做备份
为什么执行报错
cp: 无法获取"ls" 的文件状态(stat): 没有那个文件或目录
./if: 行 5: 1: 未找到命令

开始怀疑是子目录没创建,但是我 建一个 backup的目录,还是一样报错啊?
这是什么情况啊?

还有,我发现这书上写的 if 有点乱;
if 后面 有时是 小括号 有时是中括号
有时括号后面有 封号,有时后面又没有封号
这是怎么回事?

谢谢啦
學shell你還是找那本電子書吧.ebook99搞的pdf.在chinaunix論壇有連載.