Chinaunix
标题:
linux下的do循环的变量有问题?
[打印本页]
作者:
oceanmeng
时间:
2013-04-19 11:45
标题:
linux下的do循环的变量有问题?
在suse linux 下执行如下代码,发现 echo "b${sumfile}" 还是等于0,而AIX下可能得到累加的数值,这是为什么? linux下的do循环的变量有问题?
sumfile=0
ls -ld |while read ListFiles
do
echo "[${ListFiles}]文件(或目录)"
let sumfile=sumfile+1
echo "a${sumfile}"
done
echo "b${sumfile}"
复制代码
作者:
关阴月飞
时间:
2013-04-19 12:22
回复
1#
oceanmeng
试试这个,不解释:
sumfile=0
while read ListFiles
do
echo "[${ListFiles}]文件(或目录)"
let sumfile=sumfile+1
echo "a${sumfile}"
done < <(ls -ld)
echo "b${sumfile}"
复制代码
作者:
Shell_HAT
时间:
2013-04-19 12:28
打开ABS,看看第295页。
Advanced Bash-Scripting Guide 3.9.1 中文版.pdf
http://bbs.chinaunix.net/thread-1610033-1-1.html
作者:
oceanmeng
时间:
2013-04-19 13:18
为何抱错,我都尝试了
LKFXTSVRt01:~/mjb$ sh kfpt_rm.sh "/home/wasup/mjb/log/" "*xls"
--------------rm start time is 20130419130245---------------------
kfpt_rm.sh: line 63: syntax error near unexpected token `<'
kfpt_rm.sh: line 63: ` done < <(ls -ld "${InputDir}"${InputFile})'
LKFXTSVRt01:~/mjb$ sh kfpt_rm.sh "/home/wasup/mjb/log/" "*xls"
--------------rm start time is 20130419130310---------------------
kfpt_rm.sh: line 63: syntax error near unexpected token `('
kfpt_rm.sh: line 63: ` done <<(ls -ld "${InputDir}"${InputFile})'
LKFXTSVRt01:~/mjb$ sh kfpt_rm.sh "/home/wasup/mjb/log/" "*xls"
--------------rm start time is 20130419130336---------------------
kfpt_rm.sh: line 63: syntax error near unexpected token `('
kfpt_rm.sh: line 63: ` done << (ls -ld "${InputDir}"${InputFile})'
LKFXTSVRt01:~/mjb$ sh kfpt_rm.sh "/home/wasup/mjb/log/" "*xls"
--------------rm start time is 20130419130550---------------------
kfpt_rm.sh: line 63: syntax error near unexpected token `<'
kfpt_rm.sh: line 63: ` done < < (ls -ld "${InputDir}"${InputFile})'
LKFXTSVRt01:~/mjb$ sh kfpt_rm.sh "/home/wasup/mjb/log/" "*xls"
--------------rm start time is 20130419131236---------------------
kfpt_rm.sh: line 63: syntax error near unexpected token `('
kfpt_rm.sh: line 63: ` done < (ls -ld "${InputDir}"${InputFile})'
复制代码
作者:
L_kernel
时间:
2013-04-19 14:02
因为ls -ld的行为在当前目录下的结果就是1
作者:
关阴月飞
时间:
2013-04-19 14:10
回复
4#
oceanmeng
别用sh xxx.sh 这种方法执行脚本,用以下两种方法试试吧:
bash kfpt_rm.sh "/home/wasup/mjb/log/" "*xls"
复制代码
或者:
chmod 755 kfpt_rm.sh
./kfpt_rm.sh "/home/wasup/mjb/log/" "*xls"
复制代码
作者:
Shell_HAT
时间:
2013-04-19 15:53
用 sh xxx.sh 执行脚本的,上辈子都是折翼的天使
@关阴月飞
作者:
oceanmeng
时间:
2013-04-19 16:36
我不是仅ls -ld啊,后面还带了路径和文件名啊
作者:
Shell_HAT
时间:
2013-04-19 16:45
回复
8#
oceanmeng
请尝试6楼的方法
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2