shell基础编程

在这里插入图片描述
.sh的就是shell脚本
shell程序时以文件形式存放批量的Linux命令集合。该文件能被Shell解释执行。
通常由一段Linux命令、shell命令、控制语句以及注释语句构成。

shell脚本编写

shell脚本是纯文本,可以使用任何文本编辑器编写。
shell脚本通常以.sh为后缀。
除第一行以外,其他行的#都表示注释。

shell的第一行

需要制定能程序来编译和执行脚本。
一般.sh连接的是bash这个目录,多以第一行一般写

#!/bin/bash

变量

变量名

变量名必须以字母或下划线开头,后面介意跟字母、数字或下划线。任何其它字符都标志变量名的结束。
变量名关于大小写敏感。

赋值

给变量名赋值时禁止空格

name=temmie

这时使用echo $name,会返回temmie
在这里插入图片描述

变量名的引用

$变量名
或
${变量名}

变量类型

根据变量的作用域,可以分为本地变量环境变量
本地变量只在创建它们的shell中可以使用,环境变量可以在所有的用户进程使用,也叫全局变量。
环境变量需要大写,惯例
环境变量在用户主目录中的.bash_profile中,使用export 变量名=赋值 来导出变量
在这里插入图片描述
然后source .bash_profile来使变量生效就可以使用了。

显示变量

set就可以显示所有变量

位置参量

在这里插入图片描述
是一组特殊的内置变量,通常被shell脚本用来从命令行接收参数,或被函数用来保存传递给它的参数。
就相当于python函数的实参,是你给脚本输入的参数。
每一个字符串是一个位置参量,不同参量用空格隔开。如果位置参量中包含空格要使用引号包含这个参量。
使用这些参数时,用$1表示第一个参数,$2表示第二个参数…大于9后需要写成${10}${11}(1-9的也可以使用花括号括起来)

$0当前脚本的文件名
$1-$9第1-9个位置参量
${10}第10个位置参量,后面类推
$#位置参量的个数
$*以单字符串显示所有位置参量
$@为加双一号时域$*含义相同,加双引号
$$脚本运行的当前进程号
$!最后一个后台运行的进程号
$?显示前面最后一个命令的退出状态,0表示没有,其他任何值表示有错误,用来查看错误,如果有错误应该停止运行

执行脚本

. 脚本名.sh
或
sh 脚本名.sh

数组

数组定义

用括号表示

a=(b c d)
echo $a

数组索引

echo ${a[num]}#显示num位置处的值,num从0开始
echo ${a[*]}#显示数组中所有内容
echo ${#a[*]}#显示数组中元素个数
a[0]=1#数组的赋值

date

显示时间

date +%Y-%m-%d-%H-%M-%S#后面是匹配格式,年、月、日、时、分、秒,如果不记得格式符号可以info或man来查询

在这里插入图片描述
如果在脚本中使用date,需要写成

$(date)

2天以前

$(date --date='2 days' +%Y-%m-%d)

如果是明天就改成-1 days,以此类推。

cal

日历
查看一年的某一月份

cal 09 2018#查看18年9月的日历

判断

文件类型判断

-e判断是否存在exist的缩写
-f是否存在且未file文件
-d是否存在且未目录(dictionary)

文件权限判断

-r文件是否有可读权限
-w文件是否有可写权限
-x文件是否有可执行权限

两个整数之间的判定

a -eq ba等于b
a -ne ba不等于b
a -gt ba大于b
a -lt ba小于b
a -ge ba大于等于b
a -le ba小于等于b

判断字符串的数据

-z str判断str是否为0,空字符串返回true
-n str判断str是否非零
str1=str2判断str1是否等于str2
str1!=str2判断str1是否不等于str2

判断符号

test 或者使用方括号

if判断

if [条件判断式];then
	当条件判断式成立时,可以进行的指令内容工作
fi

fi是结束的意思
多重判断

if [条件判断式];then
	当条件判断式成立时,可以进行的指令工作内容;
else
	当条件判断式不成立时,可进行指令工作内容;
fi
if [条件判断式1];then
	当条件判断式成立时,可以进行的指令工作内容;
elif[条件判断式2];then
	当条件判断式成立时,可以进行的指令工作内容;
....
else
	当条件判断式不成立时,可进行指令工作内容;
fi

for循环

for var in 1 2 3 4 5
do
	指令
done
for((i=0;i<n;i=i+1))
do 
	指令
done

while循环

状态判断式为false时停止执行

while [状态判断式]
do
	程序
done

状态判断式为true时停止执行

untill [状态判断式]
do
	程序
done

默认值

给c赋值a,如果没有a,默认给c赋值b

c={a:-b}

从文件或命令中逐行读取

读取file文件的内容

cat file|while read line
do
echo $line
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值