shell脚本程序
来源:互联网 发布:买卖时机软件下载 编辑:程序博客网 时间:2024/04/23 15:19
脚本程序的内容以文本的形式存储,运行之前不需要编译,由解释程序执行,一般可运行在除系统软件外的各个领域。shell脚本程序主要用于系统管理和文件操作,它能方便自如的处理大量重复性的系统工作,降低管理员敲击键盘和出现错误的机会。
一、简单脚本示例:
查询是否设置了某参数,是则返回参数值,否则显示未设置;脚本行首必须使用#!符号指定脚本程序的解释程序。
--------------------------------------------------------------------------------
#! /bin/bash
# /home/yan/showenv
if [ $# -ne 1 ];then
echo“usage:showenv<envname>”
else
env=`set |grep $ 1`
if [ -z $env ];then
echo“Don‘t set env $1”
else
echo $env
fi
fi
--------------------------------------------------------------------------------
在脚本程序编写完成并作为文本保存后,必须更改它的执行权限,# chmod ug+x showenv
脚本程序被设置了可执行权限后,即可在命令行调用,必须指定脚本程序的正确路径,然后执行它:
#./showenv pwd
pwd=/home/yan
二、基本脚本编程
1、条件测试
在shell脚本中需要进行大量的条件测试,大部分的运行动作都给予这些比较结果来进行,在shell中的比较有两种方式:
使用test命令,test 条件表达式
使用中括号! [ 条件表达式 ] (在条件表达式的两边都必须留有一个空格)
其意义和使用的比较表达式是相同的。当条件表达式为真时,传回0(真),为假时,传回非零(1~255).
shell常用的条件运算符
=================================================================================
逻辑运算符
-------------------------------------------------------------
-a 逻辑“与”
-o 逻辑“或”
! 逻辑“否”
-------------------------------------------------------------
文件比较运算符
-------------------------------------------------------------
-e filename 若filename存在,则为真
-d filename 若filename为目录,则为真
-f filename 若filename为常规文件,则为真
-L filename 若filename为符号链接,则为真
-r filename 若filename可读,则为真
-w filename 若filename可写,则为真
-x filename 若filename可执行,则为真
-e filename 若filename存在,则为真
filename1 -nt filename2 若filename1比filename2新,则为真
filename1 -ot filename2 若filename1比filename2旧,则为真
-------------------------------------------------------------
字符串比较运算符,(请注意引号的使用)
-------------------------------------------------------------
-z string 若string长度为零,则为真
-n string 若string长度非零,则为真
string1=string2 若string1与string2相同,则为真
string1!=string2 若string1与string2不同,则为真
-------------------------------------------------------------
运算比较运算符
-------------------------------------------------------------
num1 -eq num2 相等
num1 -ne num2 不等
num1 -lt num2 小于
num1 -le num2 小于或等于
num1 -gt num2 大于
num1 -ge num2 大于或等于
=================================================================================
如:测试两个文件,一个可否执行,一个是否可写
# [ -w show.ls -a -x showenv ]
# echo #?
测试2字符串是否相等
#test $pwd=/home/yan
#echo $?
测试用户ID是否为20000
# [ $UID=20000 ]
# echo $?
2、流程控制(与c语言相似)
(1)if then else语句
if语句测试条件,若为真,则执行if体中某段语句,若为假执行if体外语句
(2)for循环
格式为:
------------------------------------------------------------------------
for 变量名 in 列表
do
命令
done
------------------------------------------------------------------------
示例:test.1
------------------------------------------------------------------------
#!/bin/bash
# test.1
for var in 1 2 3 4 5
do echo -n “var”
done
------------------------------------------------------------------------
(3)until循环
until在条件为假时执行命令,直到条件为真
格式为:
------------------------------------------------------------------------
until 条件
do
命令
done
------------------------------------------------------------------------
(4)while循环
while检测条件为真,则执行循环体内的命令语句,常用于从输入文件中读取数据
格式为:
-----------------------------------------------------------------------
while 条件
do
命令
done
-----------------------------------------------------------------------
示例:test.2
-----------------------------------------------------------------------
#!/bin/bash
# test.2
number=0
while [ $number -lt 10 ]
do
echo “$number\c”
number=`expr $number+1`
done
echo
-----------------------------------------------------------------------
(5)case语句
case语句提供多重选择,case的模式必须以右括号结束,可指定一些确定的字符串还可以指定如下字符串的集合:
-----------------------------------------------------------------------
* 任意多个字符串
? 任何一个字符
[abc] a、b、c字符之一
[a-n] 从a到n的任一个字符
/ 多重选择
-----------------------------------------------------------------------
示例:test.3接受用户从终端输入字符,并判断输入的字符是否为A、B、C或a、b、c,并输出相应结果
-----------------------------------------------------------------------
#!/bin/bash
#test.3
echo "enter A,B,C:"
read letter
case $letter in
A|a echo "you enterd A.";;
B|b echo "you enterd B.";;
C|c echo "you enterd C.";;
*) echo "not a,b,c";;
esac
-----------------------------------------------------------------------
(6)break及continue
均用于for,while,until循环控制,break会直接跳出循环,continue会中断本次循环,跳到循环开始部分。
3、函数
shell函数由两部分组成,即函数标题和函数体,函数标题就是函数名,而且应该是唯一的。
定义函数的格式:
-----------------------------------------------------------------------
函数名()
{
command;
... ...
command;
}
-----------------------------------------------------------------------
一、简单脚本示例:
查询是否设置了某参数,是则返回参数值,否则显示未设置;脚本行首必须使用#!符号指定脚本程序的解释程序。
--------------------------------------------------------------------------------
#! /bin/bash
# /home/yan/showenv
if [ $# -ne 1 ];then
echo“usage:showenv<envname>”
else
env=`set |grep $ 1`
if [ -z $env ];then
echo“Don‘t set env $1”
else
echo $env
fi
fi
--------------------------------------------------------------------------------
在脚本程序编写完成并作为文本保存后,必须更改它的执行权限,# chmod ug+x showenv
脚本程序被设置了可执行权限后,即可在命令行调用,必须指定脚本程序的正确路径,然后执行它:
#./showenv pwd
pwd=/home/yan
二、基本脚本编程
1、条件测试
在shell脚本中需要进行大量的条件测试,大部分的运行动作都给予这些比较结果来进行,在shell中的比较有两种方式:
使用test命令,test 条件表达式
使用中括号! [ 条件表达式 ] (在条件表达式的两边都必须留有一个空格)
其意义和使用的比较表达式是相同的。当条件表达式为真时,传回0(真),为假时,传回非零(1~255).
shell常用的条件运算符
=================================================================================
逻辑运算符
-------------------------------------------------------------
-a 逻辑“与”
-o 逻辑“或”
! 逻辑“否”
-------------------------------------------------------------
文件比较运算符
-------------------------------------------------------------
-e filename 若filename存在,则为真
-d filename 若filename为目录,则为真
-f filename 若filename为常规文件,则为真
-L filename 若filename为符号链接,则为真
-r filename 若filename可读,则为真
-w filename 若filename可写,则为真
-x filename 若filename可执行,则为真
-e filename 若filename存在,则为真
filename1 -nt filename2 若filename1比filename2新,则为真
filename1 -ot filename2 若filename1比filename2旧,则为真
-------------------------------------------------------------
字符串比较运算符,(请注意引号的使用)
-------------------------------------------------------------
-z string 若string长度为零,则为真
-n string 若string长度非零,则为真
string1=string2 若string1与string2相同,则为真
string1!=string2 若string1与string2不同,则为真
-------------------------------------------------------------
运算比较运算符
-------------------------------------------------------------
num1 -eq num2 相等
num1 -ne num2 不等
num1 -lt num2 小于
num1 -le num2 小于或等于
num1 -gt num2 大于
num1 -ge num2 大于或等于
=================================================================================
如:测试两个文件,一个可否执行,一个是否可写
# [ -w show.ls -a -x showenv ]
# echo #?
测试2字符串是否相等
#test $pwd=/home/yan
#echo $?
测试用户ID是否为20000
# [ $UID=20000 ]
# echo $?
2、流程控制(与c语言相似)
(1)if then else语句
if语句测试条件,若为真,则执行if体中某段语句,若为假执行if体外语句
(2)for循环
格式为:
------------------------------------------------------------------------
for 变量名 in 列表
do
命令
done
------------------------------------------------------------------------
示例:test.1
------------------------------------------------------------------------
#!/bin/bash
# test.1
for var in 1 2 3 4 5
do echo -n “var”
done
------------------------------------------------------------------------
(3)until循环
until在条件为假时执行命令,直到条件为真
格式为:
------------------------------------------------------------------------
until 条件
do
命令
done
------------------------------------------------------------------------
(4)while循环
while检测条件为真,则执行循环体内的命令语句,常用于从输入文件中读取数据
格式为:
-----------------------------------------------------------------------
while 条件
do
命令
done
-----------------------------------------------------------------------
示例:test.2
-----------------------------------------------------------------------
#!/bin/bash
# test.2
number=0
while [ $number -lt 10 ]
do
echo “$number\c”
number=`expr $number+1`
done
echo
-----------------------------------------------------------------------
(5)case语句
case语句提供多重选择,case的模式必须以右括号结束,可指定一些确定的字符串还可以指定如下字符串的集合:
-----------------------------------------------------------------------
* 任意多个字符串
? 任何一个字符
[abc] a、b、c字符之一
[a-n] 从a到n的任一个字符
/ 多重选择
-----------------------------------------------------------------------
示例:test.3接受用户从终端输入字符,并判断输入的字符是否为A、B、C或a、b、c,并输出相应结果
-----------------------------------------------------------------------
#!/bin/bash
#test.3
echo "enter A,B,C:"
read letter
case $letter in
A|a echo "you enterd A.";;
B|b echo "you enterd B.";;
C|c echo "you enterd C.";;
*) echo "not a,b,c";;
esac
-----------------------------------------------------------------------
(6)break及continue
均用于for,while,until循环控制,break会直接跳出循环,continue会中断本次循环,跳到循环开始部分。
3、函数
shell函数由两部分组成,即函数标题和函数体,函数标题就是函数名,而且应该是唯一的。
定义函数的格式:
-----------------------------------------------------------------------
函数名()
{
command;
... ...
command;
}
-----------------------------------------------------------------------
0 0
- 程序启动脚本 shell
- shell脚本程序练习
- shell 【调试脚本程序】
- shell脚本程序
- shell脚本程序
- shell脚本程序
- shell脚本程序 如何运行
- linux的Shell脚本程序
- shell脚本运行java程序
- Shell脚本学习-程序调试
- C程序调用shell脚本
- Shell 脚本启动java程序
- shell脚本调用java程序
- shell 脚本启动jar程序
- 运行java程序shell脚本
- shell脚本应用小程序
- shell脚本运行java程序
- shell脚本编写小程序
- 一步一步学zedboard之五嵌入式环境搭建
- git基本命令
- 获取当前时间
- 通过UIView 来获取 Controller
- 使用Maven创建struts2工程(注解版)
- shell脚本程序
- 第一次启动应用时,加载引导页问题
- 小议fprintf函数
- 基于Node.js的文件下载服务器
- 关于使用speex进行音频压缩
- Mysql热备增量备份与恢复(-)--备份部分
- cocos2d-x提示'__useHeader' : macro redefinition的解决方法
- 使用SmartUpload 上传图片时所遇到的问题
- 百度地图API上手