Linux shell编程

1.什么是shell

shell是内核的保护壳
从程序角度看,shell本身是一种用C语言写的程序
从用户角度看,shell是命令解释器
同时,shell还是一门编程语言 shellscript

2.shell类型

sh bash	csh ksh kcsh...   //查看当前系统上有效的shell

echo $SHELL					//查看当前的登录shell

Linux系统选择bash作为系统的默认登录shell

3.bash特点及使用

1.命令历史

bash能够记录你使用过的所有指令,上下键可以找到之前的指令

history

vim .bash_history

vim .bashrc
HISTSIZE=1000
HISTFILESIZE=2000

!编号

2.补全功能 table

指令补全
文件名补全

3.命令别名 alias

alias 指令别名='很长的指令'
alias rm='rm -i'

4.作业控制,前台后台

&   把这个命令放到后台执行

fg  将后台中的命令调至前台继续运行,
如果后台中有多个命令,可以用 fg %jobnumber将选中的命令
调出%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

jobs   查看当前有多少在后台运行的命令

ctrl+z   可以将一个正在前台执行的命令放到后台,并且暂停

5.shell脚本

windwos使用.bat 批处理文件
Linux的shell脚本也有类似功能,但更强大

4.shell语法

总览

变量
条件
程序控制
函数

1.变量

环境变量
	env
	export PATH
		/etc/profile
		~/.profile
		~/.bashrc 
e2			mydir=/home/csgec/temp
	
	cd $mydir
	
	另一个使用自定义变量的地方就是脚本中
特殊变量
	$?	表示上一个命令的退出码
	echo $?

设置变量的规则:
	1.变量名称与C语言类似,只能是字母和数字,数字不能用于开头
	2.变量名与变量值用等号连接
	3.等号两边不能有空格	*****
	4.如果变量内容包含空格,那么必须用引号引起来	*****
	5.可以通过在变量名前加一个$符号来访问它的内容	*****
	6.通常大写字符是系统预设变量,自定变量用小写,以示区分,方便判断

2.第一个脚本程序

#开头的行表示注释
#!/bin/bash 这个就不是注释,是告诉系统,使用哪个shell来解释执行该脚本
echo 用于显示,相当于printf

脚本的执行:
	1.给脚本添加 可执行权限
		./xxx.sh 
	2./bin/sh xxx.sh 
		
	3.source xxx.sh //开发板上必须使用该指令来执行脚本

3.条件:

test 条件
[ 条件 ]
	测试字符串
		str1 = str2		相等返回真
			!=
			>
			<
		-n string		不为空,则为真
		-z string 		为空,则返回真

	测试算术表达式
		expr1  -eq  expr2		相等
			   -nq				不等于
			   -gt				大于
			   -lt				小于
			   -ge				大于等于
			   -le				小于等于
			   
	测文件:
			-d	是目录则为真
			-f	是普通文件
			-e  存在则为真
			-r 
			-w 
			-x 

4.if语句

#方式1
if 条件
then
	语句
fi


#方式2
if 条件 
then 
	语句
elif 条件
then 
	语句
else
	语句
fi 

5.for语句

for 变量 in 字符列表
do
	语句
done

反引号:获取指令的执行结果

例如1:

for d in 1 2 3 4 5
do
    echo $d
done

输出:

1
2
3
4
5

例如2:

sum=0;
for ((j=0; j<5; j++))
do
    ((sum+=j))
done

输出:

sum: 10

6.while语句

while 条件 
do 
	语句
done 

例如:

!/bin/bash

i=0
while ((i<3))
do
    ((i++))
    echo "hello"

done

7.case语句

case 变量 in 
	匹配模式)语句;;
	...
	匹配模式)语句;;
esac

8.字符串处理 EL

${....}

path=/home/csgec/a.txt 

${path#*/}:删除第一个/及其左边的字符串,从左至右
	home/csgec/a.txt 
${path##*/}:删除最后一个/及其左边的字符串,从左至右
	a.txt 
	
${path%/*}:删除第一个/及其右边的字符串,从右至左
	/home/csgec
${path%%/*}:删除最后个/及其右边的字符串,从右至左

9.函数

不带参函数

function test()  #定义函数
{
    echo "this is a function"
}

test   #调用函数

输出:

this is a function

带参参数

s1=1
s2=2
function sum()
{
    res=$[$s1+$s2]
    echo $res
}

sum $1 $2

输出:

3

10.数组

array=(1,2,3,4,5,6)  #初始化数组
index=0
while ((index <6))
do
    echo ${array[index]}  #输出数组内容
    ((index+=1))
done

或者

for data in $array
do
   echo $data
done

输出如下:

1,2,3,4,5,6

11. 获取环境变量

在这里插入图片描述

12. 基本运算

example1=$[3*5]
echo $example1

example2=$((1+2*3))
echo $example2

输出:
15
7

13. shell调用其它shell脚本

#!/bin/bash

source /test/demo.sh

13. case语句

read data
case $data in
1)
    echo "this is 1"
;;
2)
    echo "this is 2"
;;
3)
    echo "this is 3"
;;
*)
    echo "this is error"
;;
esac

shell之把ubuntu dash切换为bash

 sudo rm /bin/sh 
 sudo ln -s /bin/bash /bin/sh 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过的小熊~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值