ubuntu之shell编程学习笔记3——编程的基本元素
2011-10-26 16:59
369 查看
1、for while until三种循环的使用方法
语法:for var; do
....
done
例如:for ((i=1;i<=10;i++))
do
echo "num is $i"
done
语法:while :; do
echo looping...
done
若为 ture ,则执行 do 与 done 之间的命令,然后重新判断 while 后的 return value 。
* 若为 false ,则不再执行 do 与 done 之间的命令而结束循环
与 while 相反,until 是在 return value 为 false 时进入循环,否则结束。
* break
* continue
break 是用来打断循环,也就是"强迫结束" 循环
continue 后面也可指定一个数值 n ,以决定继续哪一层(从里向外计算)的循环,默认值为 continue 1 ,也就是继续当前的循环。
2、条件控制与流程控制
test命令用法。功能:检查文件和比较值
1)判断表达式
if test (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式2 两个表达式都为真
test 表达式1 –o 表达式2 两个表达式有一个为真
2)判断字符串
test –n 字符串 字符串的长度非零
test –z 字符串 字符串的长度为零
test 字符串1=字符串2 字符串相等
test 字符串1!=字符串2 字符串不等
3)判断整数
test 整数1 –eq 整数2 整数相等
test 整数1 –ge 整数2 整数1大于等于整数2
test 整数1 –gt 整数2 整数1大于整数2
test 整数1 –le 整数2 整数1小于等于整数2
test 整数1 –lt 整数2 整数1小于整数2
test 整数1 –ne 整数2 整数1不等于整数2
4)判断文件
test File1 –ef File2 两个文件具有同样的设备号和i结点号
test File1 –nt File2 文件1比文件2 新
test File1 –ot File2 文件1比文件2 旧
test –b File 文件存在并且是块设备文件
test –c File 文件存在并且是字符设备文件
test –d File 文件存在并且是目录
test –e File 文件存在
test –f File 文件存在并且是正规文件
test –g File 文件存在并且是设置了组ID
test –G File 文件存在并且属于有效组ID
test –h File 文件存在并且是一个符号链接(同-L)
test –k File 文件存在并且设置了sticky位
test –b File 文件存在并且是块设备文件
test –L File 文件存在并且是一个符号链接(同-h)
test –o File 文件存在并且属于有效用户ID
test –p File 文件存在并且是一个命名管道
test –r File 文件存在并且可读
test –s File 文件存在并且是一个套接字
test –t FD 文件描述符是在一个终端打开的
test –u File 文件存在并且设置了它的set-user-id位
test –w File 文件存在并且可写
test –x File 文件存在并且可执行
if语法:if-then-else
if [] ;then
done..................
fi
例子:
if [-d /root/tmp]; then
echo '/root/tmp目录存在'
else
echo '/root/tmp目录不存在'
fi
if test "str" > "xyz"
echo "字符串str比较大"
else
echo "字符串str比较小"
fi
命令1 && 命令2
&&称为逻辑的AND,其运作的方式:如果“命令1”执行结果为真,才会执行“命令2”.
例如:
[ -z "$PS1" ] && return
先判断$PS1变量值是否为空,如果为空,就执行return命令,由子shell环境返回到父shell,这等于是结束执行该script.
命令1 || 命令2
运作方式为:如果“命令1”执行为假,才会执行“命令2”
case的语法格式如下:
case var in
exp-1) 命令体1 ;;
exp-2) 命令体2 ;;
...
*) 命令体 ;;
例子:
case $param in
$((a+b))) echo "NO1"
param="dog" ;;
hello) echo "NO2"
param="cat";;
10) echo "NO3"
param="pig";;
*) echo "ERROR"
esac
select语句结构:
select 变量 in 选项1 选项2 ;do
break
done
例如:for循环里嵌套一个 select语句
#!/bin/sh
for((i=1;i < 3;i=$[$i+1])); do
echo "What is your favourite OS?"
select var in "Linux" "Cnu Hurd" "Free BSD" "Other";do
break
done
echo "You have selected $var"
done
3、数组和expr
shell 数组
BASH只支持一维数组,但参数个数没有限制。
声明一个数组:
declare -a array,或者直接赋值
数组赋值:
(1) array=(var1 var2 var3 ... varN)
(2) array=([0]=var1 [1]=var2 [2]=var3 ...
=varN)
(3) array[0]=var1
arrya[1]=var2
...
array
=varN
计算数组元素个数:
${#array[@]} 或者 ${#array[*]}
引用数组:
echo ${array
}
遍历数组:
filename=(`ls`)
for var in ${filename[@]};do
echo $var
done
expr操作
expr命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
例子:增量计数
expr在循环中用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法意
即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量。
$LOOP=0
$LOOP=`expr $LOOP + 1`
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。
$expr 30 * 3
90
语法:for var; do
....
done
例如:for ((i=1;i<=10;i++))
do
echo "num is $i"
done
语法:while :; do
echo looping...
done
若为 ture ,则执行 do 与 done 之间的命令,然后重新判断 while 后的 return value 。
* 若为 false ,则不再执行 do 与 done 之间的命令而结束循环
与 while 相反,until 是在 return value 为 false 时进入循环,否则结束。
* break
* continue
break 是用来打断循环,也就是"强迫结束" 循环
continue 后面也可指定一个数值 n ,以决定继续哪一层(从里向外计算)的循环,默认值为 continue 1 ,也就是继续当前的循环。
2、条件控制与流程控制
test命令用法。功能:检查文件和比较值
1)判断表达式
if test (表达式为真)
if test !表达式为假
test 表达式1 –a 表达式2 两个表达式都为真
test 表达式1 –o 表达式2 两个表达式有一个为真
2)判断字符串
test –n 字符串 字符串的长度非零
test –z 字符串 字符串的长度为零
test 字符串1=字符串2 字符串相等
test 字符串1!=字符串2 字符串不等
3)判断整数
test 整数1 –eq 整数2 整数相等
test 整数1 –ge 整数2 整数1大于等于整数2
test 整数1 –gt 整数2 整数1大于整数2
test 整数1 –le 整数2 整数1小于等于整数2
test 整数1 –lt 整数2 整数1小于整数2
test 整数1 –ne 整数2 整数1不等于整数2
4)判断文件
test File1 –ef File2 两个文件具有同样的设备号和i结点号
test File1 –nt File2 文件1比文件2 新
test File1 –ot File2 文件1比文件2 旧
test –b File 文件存在并且是块设备文件
test –c File 文件存在并且是字符设备文件
test –d File 文件存在并且是目录
test –e File 文件存在
test –f File 文件存在并且是正规文件
test –g File 文件存在并且是设置了组ID
test –G File 文件存在并且属于有效组ID
test –h File 文件存在并且是一个符号链接(同-L)
test –k File 文件存在并且设置了sticky位
test –b File 文件存在并且是块设备文件
test –L File 文件存在并且是一个符号链接(同-h)
test –o File 文件存在并且属于有效用户ID
test –p File 文件存在并且是一个命名管道
test –r File 文件存在并且可读
test –s File 文件存在并且是一个套接字
test –t FD 文件描述符是在一个终端打开的
test –u File 文件存在并且设置了它的set-user-id位
test –w File 文件存在并且可写
test –x File 文件存在并且可执行
if语法:if-then-else
if [] ;then
done..................
fi
例子:
if [-d /root/tmp]; then
echo '/root/tmp目录存在'
else
echo '/root/tmp目录不存在'
fi
if test "str" > "xyz"
echo "字符串str比较大"
else
echo "字符串str比较小"
fi
命令1 && 命令2
&&称为逻辑的AND,其运作的方式:如果“命令1”执行结果为真,才会执行“命令2”.
例如:
[ -z "$PS1" ] && return
先判断$PS1变量值是否为空,如果为空,就执行return命令,由子shell环境返回到父shell,这等于是结束执行该script.
命令1 || 命令2
运作方式为:如果“命令1”执行为假,才会执行“命令2”
case的语法格式如下:
case var in
exp-1) 命令体1 ;;
exp-2) 命令体2 ;;
...
*) 命令体 ;;
例子:
case $param in
$((a+b))) echo "NO1"
param="dog" ;;
hello) echo "NO2"
param="cat";;
10) echo "NO3"
param="pig";;
*) echo "ERROR"
esac
select语句结构:
select 变量 in 选项1 选项2 ;do
break
done
例如:for循环里嵌套一个 select语句
#!/bin/sh
for((i=1;i < 3;i=$[$i+1])); do
echo "What is your favourite OS?"
select var in "Linux" "Cnu Hurd" "Free BSD" "Other";do
break
done
echo "You have selected $var"
done
3、数组和expr
shell 数组
BASH只支持一维数组,但参数个数没有限制。
声明一个数组:
declare -a array,或者直接赋值
数组赋值:
(1) array=(var1 var2 var3 ... varN)
(2) array=([0]=var1 [1]=var2 [2]=var3 ...
=varN)
(3) array[0]=var1
arrya[1]=var2
...
array
=varN
计算数组元素个数:
${#array[@]} 或者 ${#array[*]}
引用数组:
echo ${array
}
遍历数组:
filename=(`ls`)
for var in ${filename[@]};do
echo $var
done
expr操作
expr命令一般用于整数值,但也可用于字符串。一般格式为:
expr argument operator argument
例子:增量计数
expr在循环中用于增量计算。首先,循环初始化为0,然后循环值加1,反引号的用法意
即替代命令。最基本的一种是从(expr)命令接受输出并将之放入循环变量。
$LOOP=0
$LOOP=`expr $LOOP + 1`
使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。
$expr 30 * 3
90
相关文章推荐
- ubuntu之shell编程学习笔记2——编程基础
- ubuntu之shell编程学习笔记5——基本文本处理
- windows编程学习笔记一之——windows程序基本框架
- JAVA学习笔记--4.多线程编程 part3.JAVA多线程的常见概念和基本类库
- JavaScript DOM编程 学习笔记-获取元素节点
- JS DOM编程艺术——DOM获取元素—— JS学习笔记2015-7-6(第77天)
- jquery1.9学习笔记 之选择器(基本元素五)
- JAVA学习笔记(一)-基本编程技巧
- 8.shell编程(8) --- 编程基本元素
- LungoJS框架学习笔记——基本元素
- go基本语法学习笔记之并发编程
- 5、C语言深度学习笔记--C语言中的基本元素
- JavaScript DOM编程 学习笔记-获取元素节点
- Ubuntu操作系统学习笔记之磁盘基本概念
- 黑马程序员之C#编程基础学习笔记:计算一个整数数组的所有元素的和。
- Java AWT编程笔记-基本元素
- ubuntu之shell编程学习笔记1——概述
- 《Web编程入门经典》学习笔记 - Lesson01:创建结构化文档:XHTML简介、核心元素、属性组与基本文本格式
- 慕课网c linux课程学习笔记(虚拟机 ubuntu 的安装以及基本指令)
- ubuntu-11.10-server-i386学习笔记-网络基本配置