分类: LINUX
2010-05-21 09:39:14
#使用read命令读取一行数据
while read myline
do
echo "LINE:"$myline
done < datafile.txt
#使用read命令读取一行数据
cat datafile.txt | while read myline
do
echo "LINE:"$myline
done
#读取一行数据
cat datafile.txt | while myline=$(line)
do
echo "LINE:"$myline
done
#读取一行数据
while myline=$(line)
do
echo "LINE:"$myline
done < datafile.txt
#使用read命令读取变量数据
cat datafile.txt | while read paraa parab parac
do
echo "PARAA:"$paraa
echo "PARAB:"$parab
echo "PARAC:"$parac
done
#使用read命令读取变量数据
while read paraa parab parac
do
echo "PARAA:"$paraa
echo "PARAB:"$parab
echo "PARAC:"$parac
done < datafile.txt
read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] [name ...]
-e | |
-r | 指定读取命令把“\”(反斜杠)做为输入行的一个普通字符,而非控制字符。 |
-s | 安静模式。如果指定该参数且从终端读入数据,那么输入的时候将不回显在屏幕上。 |
-u |
指定读入数据的文件描述符,不再使用默认的标准输入。 |
-t |
等待标准输入的超时时间,单位为秒。如果在指定的时间内没有输入,即时返回。 |
-p |
打印提示符,等待输入,并将输入赋值给REPLY变量或者指定的变量。 |
-a |
读入一组词,依次赋值给数组array。 |
-n |
读取指定的字符数。如果已读取n个字符,马上返回,下次从返回点继续读取;如果已到行结束,无论满不满足n个字符都返回。 |
-d |
指定行结束符,读到该字符就当做一行的结束。 |
name ... | 指 定read变量。read读取一行数据后,分隔行数据为各个字段,然后将字段依次赋给指定的变量。如果分隔后的字段数目比指定的变量多,那么将把剩余的全 部字段值都赋给最后的那个变量;反之,剩余的变量被赋值为空字符串。如果read没有指定变量,系统使用默认的REPLY作为缺省变量名。 |
exec 6< datafile.txt
while read -u 6 myline
do
echo "LINE:"$myline
done
baidu$google$tencnt$sina
123456789
#使用read命令读取变量数据执行脚本的输出如下:
while read paraa parab parac parad
do
echo "PARAA:"$paraa
echo "PARAB:"$parab
echo "PARAC:"$parac
echo "PARAD:"$parad
done < datafile.txt
PARAA:baidu
PARAB:google
PARAC:tencent
PARAD:sina
PARAA:123456789
PARAB:
PARAC:
PARAD:
原文地址 http://blog.chinaunix.net/u/29141/showart_372963.html
(1) name = (value1 ... valuen) 此时下标从0开始
(2) name[index] = value
下面以一个简单的脚本来说明,脚本内容如下:
#!/bin/bash
#定义数组
A=(a b c def)
#把数组按字符串显示输出
echo ${A[@]}
#屏幕显示:a b c def
#数组的长度表示${#A[*]}
len=${#A[*]}
echo ${#A[*]}
#屏幕显示:4
#改变数组元素的值
A[3]='vivian'
echo ${A[*]}
#屏幕显示:a b c vivian
#循环输出数组元素
i=0
while [ $i -lt $len ]
do
echo ${A[$i]}
let i++
done
#屏幕输出:
# a
# b
# c
# vivian
#循环输出数组元素的另一种写法,注意,在条件中,引用变量一定要用双引号 ,否则报错
for (( j=0; j<"$len"; j=j+1 ))
do
echo ${A[$j]}
done
#循环输出数组元素的另一种写法,注意,${A[*]}不能写成$A ,$A默认是第一个元素,如果A="a b c ded",就可以写$A
for value in ${A[*]}
do
echo $value
done
----------------------------------------------------------
shell遍历目录
#!/bin/sh
for file in ./* 遍历的文件是当前目录,其他目录可以通过修改这个参数来实现
do
if test -f $file
then
echo $file
echo 是文件
fi
if test -d $file
then
echo $file
echo 是目录
fi
done
----------------------------------------------------------
cd .
myfun()
{
for i in `ls`
do
if [ -f $i ] ; then
echo $i
# string=`cat $i | grep "keyword"`
# if [ "$string" ] ; then
# echo "$PWD/$i" #找到了包含关键字的文件
# #echo "Debug: $PWD/$i is a file and find the keyword in the file!!"
# fi
# #echo "Debug: $PWD/$i is a file and doesn't find the keyword in the file!!"
else
#echo "Debug: $PWD/$i is a directory!!"
if [ -d $i ] ; then #ls命令会导致一些不存在的文件出现,需要剔除
cd $i
myfun
cd ..
else
echo "$PWD/$i is not existence!"
fi
fi
#echo "$PWD done"
done
}
myfun
还可以用basename $i, dirname $i来打印文件名和路径
-----------------------
#!/bin/sh
# 定义一个方法
foreachd(){
# 遍历参数1
for file in $1/*
do
# 如果是目录就打印处理,然后继续遍历,递归调用
if [ -d $file ]; then
echo $file
foreachd $file
fi
done
}
# 执行,如果有参数就遍历指定的目录,否则遍历当前目录
echo "parameter in = $#"
echo "parameter 0= $0"
echo "parameter 1= $1"
echo "parameter 2= $2"
if [ $# -gt "0" ];then
echo "p1 > 0"
foreachd "$1"
else
foreachd "."
fi
Shell 条件判断总结 |
时间:2007-08-03 10:53:18 来源: 作者: |
UNIX Shell 编程
一些条件判断 总结
-b file 若文件存在且是一个块特殊文件,则为真
-c file 若文件存在且是一个字符特殊文件,则为真
-d file 若文件存在且是一个目录,则为真
-e file 若文件存在,则为真
-f file 若文件存在且是一个规则文件,则为真
-g file 若文件存在且设置了SGID位的值,则为真
-h file 若文件存在且为一个符合链接,则为真
-k file 若文件存在且设置了"sticky"位的值
-p file 若文件存在且为一已命名管道,则为真
-r file 若文件存在且可读,则为真
-s file 若文件存在且其大小大于零,则为真
-u file 若文件存在且设置了SUID位,则为真
-w file 若文件存在且可写,则为真
-x file 若文件存在且可执行,则为真
-o file 若文件存在且被有效用户ID所拥有,则为真
-z string 若string长度为0,则为真
-n string 若string长度不为0,则为真
string1 = string2 若两个字符串相等,则为真
string1 != string2 若两个字符串不相等,则为真
int1 -eq int2 若int1等于int2,则为真
int1 -ne int2 若int1不等于int2,则为真
int1 -lt int2 若int1小于int2,则为真
int1 -le int2 若int1小于等于int2,则为真
int1 -gt int2 若int1大于int2,则为真
int1 -ge int2 若int1大于等于int2,则为真
!expr 若expr为假则复合表达式为真。expr可以是任何有效的测试表达式
expr1 -a expr2 若expr1和expr2都为真则整式为真
expr1 -o expr2 若expr1和expr2有一个为真则整式为真
特殊变量
$0 正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径