首先说一下案例:
[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出来。这是这个问题的关键点。
[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出来。这是这个问题的关键点。