终于有能人出来了,但是有点小问题
终端提示错误:
./ts.sh: line 14: syntax error near unexpected token `then'
./ts.sh: line 14: ` if [ ! $? -eq 0 ]; then'
附脚本:
ISO=/home/aaa/1/
Dest=/home/aaa/2/
for name in $(cat 3); do
cp $ISO/$name $Dest/$name
if [ ! $? -eq 0 ]; then
echo "Error when copying files."
break
exit 1;
fi
echo "Finished Copying "$name
done
echo "Copying Finished"
deepwhite 于 2009-05-12 16:27:00发表:
[code]#! /bin/sh
# NOTE:将下面脚本中的SOURCE_DIR换成要拷贝的文件所在目录,将DEST_DIR换成拷贝的
# 目标路径(路径均为完整路径),将logfile更改为记录待拷贝文件的文件。
# 然后将该脚本放到logfile所在的目录,进入该目录并执行该改文件即可。注意权限,注
# 意ISO需要挂载。
# 如果提示:./test.sh: /bin/sh^M: bad interpreter: No such file or directory,
# 则用dos2unix将脚本转换一下:dos2unix test.sh即可
ISO=SOURCE_DIR
Dest=DEST_DIR
for name in $(cat logfile); do
cp $ISO/$name $Dest/$name
if [ ! $? -eq 0 ]; then
echo "Error when copying files."
break
exit 1;
fi
echo "Finished Copying "$name
done
echo "Copying Finished"
[/code]将其存为test.sh,修改权限,按照代码中的说明稍加修改后直接执行即可。
limashow 于 2009-06-13 12:11:44发表:
要用shell脚本...............
luojy 于 2009-06-12 16:51:25发表:
10# xtnu
if 和[ 中间有空格
if [ ! $? -eq 0 ];then
相思爱文 于 2009-05-13 19:28:35发表:
我不懂脚本,但通常环境变量不加最后的/的,有知是否这样。
xtnu 于 2009-05-13 18:42:03发表:
用vim+tr编辑排版好了,前面和后面加操作命令是一个办法。
lushanchen 于 2009-05-13 14:09:59发表:
{:2_91:}
.....看不明白..
xtnu 于 2009-05-13 12:31:07发表:
先不管这问题了,还是要谢谢版主
deepwhite 于 2009-05-13 12:20:33发表:
文本编辑的话,建议自己去学学VI的全局替换,或者用sed去做。
deepwhite 于 2009-05-13 12:15:44发表:
建议你去找一个更懂的人去亲自帮你弄弄。
这个脚本在我这里跑,没问题。
那个包我从网站上下载解压运行也没有问题。
xtnu 于 2009-05-13 10:39:43发表:
[i=s] 本帖最后由 xtnu 于 2009-5-13 10:45 编辑 [/i]
现在又有一个问题,怎么在清单里每一行的后面紧跟着加个*
然后再连接行。实在没办法了我想这样:编辑清单,在前面加:cd /a(列表中文件所在路径) && cp 1* 2* 3* 4* (目的路径),给清单加上执行权限,这样应该能行得通,就是麻烦啊(5ty(
xtnu 于 2009-05-13 10:37:53发表:
楼上的包好象已损坏。。。。。
deepwhite 于 2009-05-13 09:00:59发表:
10# xtnu
不应该呀,我试了两台机器都没有问题的。
下面的图是执行这个脚本的情况,附件是一个脚本,你直接用这个脚本试试(注意修改其中的路径)
[attach]14204[/attach]
[attach]14205[/attach]
微宝贝 于 2009-05-13 00:17:59发表:
研究中
xtnu 于 2009-05-13 00:17:05发表:
[i=s] 本帖最后由 xtnu 于 2009-5-13 00:19 编辑 [/i]
[aaa@localhost ~]$ sudo cat /etc/passwd|grep 'aaa'
aaa:x:500:500:bbb:/home/aaa:/bin/bash
:0wszxc
[aaa@localhost ~]$ bash ts.sh
ts.sh: line 14: syntax error near unexpected token `then'
ts.sh: line 14: ` if [ ! $? -eq 0 ]; then'
hantu 于 2009-05-13 00:07:14发表:
楼主用的是不是bash?
yiday 于 2009-05-12 23:10:42发表:
对版主的回复我要好好研究研究
deepwhite 于 2009-05-12 22:43:00发表:
应该没有问题,我这里试过。
如果你那里出现问题的话应该是Shell不一样,建议使用Bash执行:
bash ts.sh
rupeijun74 于 2009-05-12 17:12:57发表:
看不懂啊{:2_94:}
xtnu 于 2009-05-12 17:09:43发表:
终于有能人出来了,但是有点小问题
终端提示错误:
./ts.sh: line 14: syntax error near unexpected token `then'
./ts.sh: line 14: ` if [ ! $? -eq 0 ]; then'
附脚本:
ISO=/home/aaa/1/
Dest=/home/aaa/2/
for name in $(cat 3); do
cp $ISO/$name $Dest/$name
if [ ! $? -eq 0 ]; then
echo "Error when copying files."
break
exit 1;
fi
echo "Finished Copying "$name
done
echo "Copying Finished"
deepwhite 于 2009-05-12 16:27:00发表:
[code]#! /bin/sh
# NOTE:将下面脚本中的SOURCE_DIR换成要拷贝的文件所在目录,将DEST_DIR换成拷贝的
# 目标路径(路径均为完整路径),将logfile更改为记录待拷贝文件的文件。
# 然后将该脚本放到logfile所在的目录,进入该目录并执行该改文件即可。注意权限,注
# 意ISO需要挂载。
# 如果提示:./test.sh: /bin/sh^M: bad interpreter: No such file or directory,
# 则用dos2unix将脚本转换一下:dos2unix test.sh即可
ISO=SOURCE_DIR
Dest=DEST_DIR
for name in $(cat logfile); do
cp $ISO/$name $Dest/$name
if [ ! $? -eq 0 ]; then
echo "Error when copying files."
break
exit 1;
fi
echo "Finished Copying "$name
done
echo "Copying Finished"
[/code]将其存为test.sh,修改权限,按照代码中的说明稍加修改后直接执行即可。
xtnu 于 2009-05-12 15:44:57发表:
几百个,一个个点?
Mqqlecyro 于 2009-05-12 15:23:48发表:
直接复制