写一个shell程序的一般流程
1、把解决问题的所有步骤写在脚本
#vim myshell.sh
#!/bin/bash 表示程序有谁来解析 bash 来解析
2、将脚本文件设置为可执行
# chmod a+x myshell.sh
# chmod 755 myshell.sh
3、执行
方法一:直接输入shell脚本的文件名
./myshell.sh
方法二:bash 脚本文件名
bash ./myshell.sh 一定在脚本的当前目录
bash /ule/sh/myshell.sh 绝对路径
方法三:. 脚本名字
. ./myshell.sh 表示让它的上级shell来执行
-------------------------------------------
如何给shell传参
例:
echo $1 \$1 表示传递第一个参数
echo $2 \$2 表示传递第二个参数
echo $3 \$3 表示第三个参数
echo $# \$\# 传递参数的个数
echo $? \$\? 表示上一个命令执行成功
echo $$ \$\$ 表示进程ID
练习:模拟一个简单的service启动程序
echo $1 $2 ing.....
httpd (pid 4560) 正在运行...
------------------------------------------
read:输入语句
格式 read [option] [var_name]
[option]:
-p:提示信息
-s:输入不显示,如同输入密码
-t n:设置超时,如果N秒不输入,就返回一个非零的退出状态(不成功)
-n n:设置接受的字符,第二个是自然数
echo:输出语句
格式:echo[option] 字符串
[option]
-n:表示不换行
-e:接受字符的控制信息 \t tab
----------------------------------------------
流程控制
选择结构:
格式一:
if [ 条件]
then
命令
fi
作用:判断 条件 是否成立,如果成立。执行命令,如果不成立,什么都不执行。
例:判断变量大小
练习:输入两个数,如何显示最大数.
输入三个数,显示最小数
---------------------
格式二
if [ 条件]
then
命令1
else
命令2
fi
作用:判断 条件 是否成立,如果成立执行命令1,如果不成立,就会执行命令2
练习:
从键盘上输入一个文件(含路径),判断是否存在,如果存在就提示文件存在,如果不存在,提示文件不存在。
练习:从键盘输入一个数,显示出他的绝对值。
-------------------------------------
格式三:多分支;
if [ condition1 ]
then
commond1
elif [ condition2 ]
then
commond2
elif [ condition3 ]
then
commond3
............
else
default_commond
fi
作用:判断condition1是否成立,如果成立执行commond1,如果不成立,
在判断condition2是否成立,如果成立执行commond2,如果不成立,
在判断condition3是否成立,如果成立执行commond3,如果不成立,
....
如果上面的条件都不成立,执行default_commond
例:输入考试成绩,判断成绩等级
90以上 A
80 B
70 C
60 D
60以下 E
---------------------------------------
多条件表示:
逻辑与:&&
if [ condition1 ] && [condition2 ]
或者
if [[ condition1 && condition2 ]]
或者
if [ condition1 -a condition2 ]
逻辑或: ||
if [ condition1 ] || [ condition2]
或者
if [[ condition1 || condition2 ]]
或者
if [ condition1 -o condition2 ]
取反:!
if [ ! condition ]
例:输入年份,判断是否是润年
(能4整除,当不能被100整除,或者能被400整除)
--------------------------------------------
格式四:case 多分支
case var_name in
value1
commond1
;;
value2
commond2
;;
value3
commond3
;;
.....
*)
default_commond
esac
作用:判断var_name的值是否与下面value值相匹配(相等),如果能找到匹配的value值。则执行他下面的commond ,如果找不到呢,则执行*下面的default_commond
---------------------
例:做个菜单用case
1:显示CPU信息
2:显示内存信息
3:显示硬盘信息
4、退出
按其他键报告选择有误。
--------------------------------------------
分支嵌套:
分支嵌套即分支中包含分支(if里面还有if)
普通分支:
if [ 条件]
then
命令1
else
命令2
fi
-----------------------
嵌套一:
if [ condition ]
then
if [ condition ]
then
commond
else
commond
fi
else
commond
fi
-----------------------------------
嵌套二:
if [ condition ]
then
commond
else
if [ condition ]
then
commond
else
commond
fi
fi
---------------------------------
嵌套三:
if [ condition ]
then
if [ condition ]
then
commond
else
commond
fi
else
if [ condition ]
then
commond
else
commond
fi
fi
-------------------------------------------
另:if [ condition ] 也可一直接跟一个命令
例:简单实现ping命令
练习:写一个脚本,判断vsftpd是否启动,没有启动,就启动它,
启动就不要
1 如何判断vsftpd 是否启动的方法
netstat -tunlp | grep -w vsftpd
2 输入用户名,判断是否存在
3 实现一个加密程序 a>c b>d c>e .....
----------------------------------------------
-------------------------------
作业:
1、判断象限
输入不同的X Y值,显示处于那一个象限。
排除非法字符:
2、输入一个文件名(含路径),判断文件是否存在,如果存在,判断当前用户对该文件的权限。
shell入门(1)
最新推荐文章于 2013-08-18 17:59:39 发布