SHELL编程基础

目录:

  1. SHELL概念
  2. 第一个SHELL脚本
  3. SHELL编程变量
  4. SHELL的if语句
  5. SHELL编程for循环
  6. SHELL编程CASE选择
  7. SHELL编程SELECT

SHELL概念

  1. SHELL是什么?
  • SHELL是用户与linux内核之间的沟通桥梁
  • 用户不能直接操作linux内核
  • 用户需要借助中间件SHELL来实现交互。
  • SHELL可以接受用户输入的指令,将指令传递给linux内核,linux内核处理指令请求,并将处理完毕的数据返回SHELL,SHELL对数据内容进行解释。
  • 可以将SHELL看作是一个命令解释器,解析用户输入的指令,并返回最终的结果
  1. 常见的SHELL
  • Bourne Shell(/usr/bin/sh 或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • Shell for Root(/sbin/sh)
  1. SHELL编程是什么?
  • 将单个或者多个Linux指令,按照一定的逻辑关系和顺序堆积在文本文件中(脚本),文本文件中指令会在SHELL解释器下被执行,这个过程可以称为SHELL编程。
  • SHELL脚本文件一般以.sh结尾,建议命令见名知意。
  1. SHELL编程工具

vi,vim,nano,gedit,sublime,notepad。建议使用vim

  1. SHELL编程规范
  • 脚本代码第一行规范,通常来讲,以#!开头(表示强调+标识),其后借SHELL解释器的类型,例如#!/bin/sh、#!/bin/bash。(SHELL脚本以/bin/sh,/bin/bash解释器去执行SHELL指令)

回到目录

SHELL编程变量

  1. 变量定义与回收
[root@linux-node2 ~]# a=123
[root@linux-node2 ~]# echo $a
123
[root@linux-node2 ~]# unset a
[root@linux-node2 ~]# echo $a

  1. SHELL变量分类
系统变量:
	$0	当前脚本的名称;
	
	$n	当前脚本的第 n 个参数,n=1,2,…9;
	
	$*	当前脚本的所有参数(不包括程序本身);
	
	$#	当前脚本的参数个数(不包括程序本身);
	
	$?	命令或程序执行完后的状态,返回 0 表示执行成功;
	
	$$	程序本身的 PID 号。


环境变量:默认linux系统已经存在的变量,永久生效,可以自定义环境变量:export a=123,将其加入/etc/profile中 
	PATH	命令所示路径,以冒号为分割;
	
	HOME	打印用户家目录;
	
	SHELL	显示当前 Shell 类型;
	
	USER	打印当前用户名;
	
	ID	打印当前用户 id 信息;
	
	PWD	显示当前所在路径;
	
	TERM	打印当前终端类型;
	
	HOSTNAME	显示当前主机名。


用户变量:
	用户自定义的变量,称为用户变量或者局部变量,例如:a=123,DIR=/usr/local/;

第一个SHELL脚本

#!/bin/bash
#This is my First shell

echo "Hello World"

回到目录

SHELL的if语句

语法格式

# 两个()表示数字比较
if ...;t hen
	action1;
else
	action2;
fi

if判断括号区别

(	)

用于多个命令组、命令替换、初始化数组;

(( ))

整数扩展、运算符、重定义变量值,算术运算比较;

[]

bash 内部命令,[与 test 是等同的,正则字符范围、引用数组元素编号,不支持+-*/ 数学运算符,逻辑测试使用-a、-o。

[[ ]]

bash 程序语言的关键字,不是一个命令,[[ ]]结构比[ ]结构更加通用,不支持+-*/

数学运算符,逻辑测试使用&&、||。

{}

主要用于命令集合或者范围,例如 mkdir	-p	/data/201{7,8}/

if 常见逻辑运算符

-e filename   如果 filename存在,则为真

-f	判断文件是否存在 eg: if [ -f filename ];

-d	判断目录是否存在 eg: if [ -d dir	];
 
-eq	等于,应用于整型比较 equal;

-ne	不等于,应用于整型比较 not equal;

-lt	小于,应用于整型比较 letter;

-gt	大于,应用于整型比较 greater;

-le	小于或等于,应用于整型比较;

-ge	大于或等于,应用于整型比较;

-a	双方都成立(and) 逻辑表达式 –a 逻辑表达式;

-o	单方成立(or) 逻辑表达式 –o 逻辑表达式;

-z	空字符串;

||	单方成立;

&&	双方都成立表达式。

回到目录

SHELL编程for循环

语法格式

for ... in 列表内容
do
	action1;
done
  

# 例如
for	website	in www.baidu.com www.taobao.com www.qq.com
do
	echo $website
done

# 循环制定次数
# 方法1
for i in `sql 1 100`
do
	echo ${i}
done

# 方法2
for i in `echo {1..100}`
do
	echo ${i}
done

# 远程批量执行命令
for i in `seq 1 3`
do
	ssh -l root 127.0.0.$i "df -h"
done

# 求 1-100 的总和
j=0

for	((i=1;i<=100;i++))
do
	j=`expr $i + $j`
done
echo $j

回到目录

SHELL编程CASE选择

语法

#!/bin/bash
 
case $1 in 
	Pattern1)
	语句 1
	;;
	Pattern2)
	语句 2
	;;
	Pattern3)
	语句 3
	;;
esac

SHELL编程SELECT

常与case配合使用

语法

select i in (表达式)
do
	语句
done

实例

#!/bin/bash

PS3="Please enter you select install menu:"
select i in http php mysql quit
do
	case $i in
		http)
		echo Test Httpd.
		;;
		php)
		echo Test PHP.
		;;
		mysql)
		echo Test MySQL.
		;;
		quit)
		echo The System exit. exit
	esac
done

回到目录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值