关于一段for循环的讨论

 首先说一下案例:
[root@staid zhenglang]# cat listdir.sh
#!/bin/sh
dir=$1
files=`ls "$dir"`
for file in $files
do
    echo "${dir}"/"${file}"
done
[root@staid zhenglang]# ./listdir.sh /home/zhenglang
/home/zhenglang/Desktop
/home/zhenglang/file_desc.sh
/home/zhenglang/listdir2.sh
/home/zhenglang/listdir.sh
/home/zhenglang/names.txt
/home/zhenglang/readname.sh
/home/zhenglang/whileread.sh
/home/zhenglang/wu-ftpd-2.6.2
/home/zhenglang/wu-ftpd-2.6.2-8.i386.rpm
/home/zhenglang/wu-ftpd-current.tar.gz
/home/zhenglang/zhenglang
/home/zhenglang/zhenglangtest
/home/zhenglang/zhenglang.test
[root@staid zhenglang]#

--------------------------------------------------------
脚本2:

[root@staid zhenglang]# cat listdir.sh
#!/bin/sh
dir=$1
files=`ls "$dir"`
for file in "$files"
do
    echo "${dir}"/"${file}"
done
[root@staid zhenglang]# ./listdir.sh /home/zhenglang
/home/zhenglang/Desktop
file_desc.sh
listdir2.sh
listdir.sh
names.txt
readname.sh
whileread.sh
wu-ftpd-2.6.2
wu-ftpd-2.6.2-8.i386.rpm
wu-ftpd-current.tar.gz
zhenglang
zhenglangtest
zhenglang.test
[root@staid zhenglang]#

--------------------------------------------------

为什么会出现这么大的不同:

问题就处在"$files",

再举个例子:
[root@staid zhenglang]# LANGTEST="ASDFASDFASDFASDFASDF"
[root@staid zhenglang]# echo $LANGTEST
ASDFASDFASDFASDFASDF
[root@staid zhenglang]# echo "$LANGTEST"
ASDFASDFASDFASDFASDF

从这个结果看:echo $LANGTEST和echo "$LANGTEST"执行结果相同,但是其实这是两种执行过程,echo "$LANGTEST"是把$LANGTEST变量的内容转换成字符串,然后才echo出来。这是这个问题的关键点。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值