[i=s] 本帖最后由 gogo11 于 2011-8-31 17:05 编辑 [/i]
[font=微软雅黑]代码如下:[/font][code]#!/bin/bash
i=0
for file in *
do
filelist_test[$i]="$file"
#echo -e "$i\t${filelist_test[$i]}"
let i=i+1
done
echo $i
echo "-------------------------------------"
for ((j=0;j<$i;j++));do
filelist_test[$j]=`echo "${filelist_test[$j]}" | sed 's/\ /\\\ /g'`
echo -e "$j\t${filelist_test[$j]}"
done
echo "-------------------------------------"
b=0
for ((j=0;j<$i;j++));do
#echo ${filelist_test[$j]}
echo $j
if [ -f ${filelist_test[$j]} ] ; then
if [ -x ${filelist_test[$j]} ] ; then
filelist[$j]=${filelist_test[$j]} && ((b++))
echo -e "$j\t${filelist_test[$j]}"
fi
fi
#echo "-------------------------------------"
done
~
[/code][font=微软雅黑]执行情况如下:[/font]
gogo11@localhost:~/CCNP/Dynamips$ ./ls_test
22
-------------------------------------
0 CCNA\ 标准版控制台02.cmd
1 CCNA标准版控制台.cmd
2 CCNA交换版控制台.cmd
3 CCNA路由版控制台.cmd
4 CCNP\ ADSL\ 控制台\ .cmd
5 CCNP标准版控制台.cmd
6 CCNP迷你版控制台.cmd
7 CCSP\ PIX\ 控制台.cmd
8 dynamips_log.txt
9 ilt_2007101400_mips64e
10 ilt_2007101400_mips64j
11 ilt_2007101400_ppc32e
12 ilt_2007101400_ppc32j
13 ios
14 ls_test
15 ls_test02
16 net
17 start
18 TEST.cmd
19 tmp
20 top
21 VPN\ 控制台.cmd
-------------------------------------
0
./ls_test: 第 20 行: [: CCNA\:此处需要二进制操作符
1
1 CCNA标准版控制台.cmd
2
2 CCNA交换版控制台.cmd
3
3 CCNA路由版控制台.cmd
4
./ls_test: 第 20 行: [: 过多的参数
5
5 CCNP标准版控制台.cmd
6
6 CCNP迷你版控制台.cmd
7
./ls_test: 第 20 行: [: 过多的参数
8
9
10
11
12
13
14
14 ls_test
15
15 ls_test02
16
17
17 start
18
18 TEST.cmd
19
20
21
./ls_test: 第 20 行: [: VPN\:此处需要二进制操作符
gogo11@localhost:~/CCNP/Dynamips$
gogo11 于 2011-09-05 12:39:59发表:
恩,加${}是我后边加的,有的地方忘了改,不过能执行正确,有的不改执行结果不对!
wonderall 于 2011-09-04 20:57:23发表:
22行应该的取值吧!加${}
gogo11 于 2011-09-04 20:32:15发表:
[i=s] 本帖最后由 gogo11 于 2011-9-4 20:34 编辑 [/i]
是文件,数字和“-----------------”上边的的相对应~~~~~~~
先是用-f把不是文件的去除,然后在用-x判断是否可执行,如果不先判断是否文件,文件夹用-x也能得出是可执行文件的结论~~~~
wonderall 于 2011-09-04 20:13:24发表:
不是个文件吧,怎么能用-f呢,改成!-z试试
ICEEN 于 2011-09-04 16:29:47发表:
[i=s] 本帖最后由 ICEEN 于 2011-9-4 16:33 编辑 [/i]
[code]for file in *
do
if [ -f "$file" ] &&[ -x "$file" ]
then
echo "EXE:$file"
fi
done[/code]
gogo11 于 2011-09-04 10:27:41发表:
双引号加上一样不行
age 于 2011-08-31 19:52:05发表:
变量加双引号呢?
gogo11 于 2011-08-31 17:02:24发表:
好像一个空格就会显示此处需要二进制操作符;
多个空格就会显示[: 过多的参数