linux shell 使用数组拷贝文件

使用什么命令,可以把文件夹里面的文件名字读取出来,然后放到一个数组里,通过调用数组拷贝文件到挂载文件夹里(能够提供shell代码最好啦),坐等高手,谢谢拉... 使用什么命令,可以把文件夹里面的文件名字读取出来,然后放到一个数组里,通过调用数组拷贝文件到挂载文件夹里(能够提供shell代码最好啦),坐等高手,谢谢拉 展开
 我来答
cantholdit
2012-04-11 · TA获得超过409个赞
知道小有建树答主
回答量:605
采纳率:0%
帮助的人:418万
展开全部
shell没有数组,不过下面的实施方式,不知道对你有帮组不?
#!/bin/sh
i=0
for filename in `ls`
do
echo "myfile$i=$filename" >> ./mydata
i=`expr $i + 1`
done

eval `cat ./mydata`

#以下演示
b=0
cat ./mydata | while read line
do
myarray="myfile$b"
eval echo "cp \$$myarray to some dir"
b=`expr $b + 1`
done
rm -f ./mydata

另外要判断是否执行成功,可调用$?,然后判断执行就行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小米飞猫
2012-04-11 · 专注于IT监控领域技术
小米飞猫
采纳数:1653 获赞数:4811

向TA提问 私信TA
展开全部
#!/bin/bash
sdir=/home/flycat
pdir=/tmp/test
array=(`ls -l $sdir | grep ^- | awk '{print $8}'`)
for i in ${array[*]};do
cp $sdir/$i $pdir
done
追问
我是拷贝一个文件夹里面很多文件,需要一个if。。。then判断文件拷贝成功与否,需要添加到您这个程序的什么地方?谢谢
追答
#!/bin/bash
sdir=/home/flycat
pdir=/tmp/test
array=(`ls -l $sdir | grep ^- | awk '{print $8}'`)
for i in ${array[*]};do
cp $sdir/$i $pdir
done
echo "复制完成"
sleep 1
echo "开始检验"
for i in ${array[*]};do
diff $sdir/$i $pdir/$i >/dev/null 2>&1
if [ $? -ne 0 ];then
echo "$sdir/$i 未cp成功" >files.log
fi
done
echo "检验完成,请查看files.log"
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式