SHELL初始:基本变量、环境变量、预定义变量、运算法

SHELL

Shell是什么

是命令行解释器。用户用它来向Linux内核发送请求来运行程序,命令要发送给Linux理解,必须要用到Shell。

如下图:

Shell编程的作用

服务器集群管理的时候,用来进行服务器管理

执行Shell脚本或者是维护服务器,比如编写一个定时备份数据库的脚本。

例:编写一个在终端输出"Hello,World"的脚本

1、创建某个文件hello.sh

mkdir /root/shcode	//在根下创建一个目录shcode
cd 	/root/shcode		//进入
vim	hello.sh

2、按照以下格式输入

#!/bin/bash				//必须有,放在第一行,是基本格式
echo "Hello,World!"		//目标语句

3、赋予执行权限

chmod u+x hello.sh

4、执行

./hello.txt				//当前目录下执行

/root/shcode/hello.sh	//绝对路线下执行

5、改进(去掉赋予权限环节,即代替3 4)

sh hello.sh				//不需要赋予权限,直接执行。

6、结果

Hello,World!

Shell基本变量

定义

变量名称一般习惯为大写,是规范,遵守即可。

注意:定义变量在等号两侧不能带空格,当然,以下都是写在.sh的文件下

定义变量

A=100

声明静态变量

readonly B=2		//此时的B是静态的了,不能unset

定义指令

用到反引号,是横排数字的最左边的键

A=`date`		//把今天的日期赋值给A,这如果没有反引号,就是把date这个单词给A
A=$(date)		//等效

撤销变量

unset A

输出变量

echo "A=$A"

设置环境变量

如果有好几个.sh文件,都要用到一个变量呢?

那就,设置环境变量(全局变量)

首先,在特定文件中,定义一个环境变量

写入过后需要以下刷新,立即生效

source

之后就通用了。

export PATHA=100	将shell变量输出为环境变量/全局变量
source 配置文件		让修改后的配置信息立即生效
echo $变量名		查询变量环境的值

位置参数变量(传入命令行给定的参数)

基本语法

$n	//n是数字,¥0是命令本身,¥1-¥9表示第一到第九个参数,十以上的参数需要用大括号表示,如¥{10}
$*	//命令行中所有参数
$@	//代表命令行中所有参数
$#	//代表命令行中所有参数的个数

例:编辑一个文件myshell.sh

#!/bin/bash
echo "$0 1=$1 2=$2"
echo "AllParameters=$*"
echo "$@"
echo "NumberofParameters=$#"       

终端

sh myshell.sh 100 200	//这里带上两个参数

结果

myshell.sh 1=100 2=200
AllParameters=100 200
100 200
NumberofParameters=2

预定义变量

shell中已经事先定义好的变量,可以直接在shell脚本中使用

基本语法

$$		//当前进程号PID
$!		//后台运行的最后一个进程点击i进程号PID
$?		//最后一次执行的命令的返回状态,如果返回值为0,则说明最后一次是正常执行执行,其他数字就不正确。

例:编辑一个文件A.sh,并使之执行另一个文件hello.sh

#!/bin/bash
echo "NowPID=$$"
#以后台的方式运行一个脚本并得到它的进程号
/root/shcod/hello.sh &	//后面带个&就会以后台的方式运行

echo "LastPID=$!"
echo "Result=$?"

终端输入

sh A.sh 

结果

NowPID=11076
LastPID=11077
Result=0
Hello,World!

运算符

\*乘  除/  +加  -减

运算式

$[]  
$(())
expr m + n 		//expression,这里的m与n之间需要有空格

例1:计算(2+3)x 4

#!/bin/bash
#第一种
RES1=$(((2+3)*4))
#第二种
RES2=$[(2+3)*4]		
#第三种
TEMP= expr 3 + 2					
RES3= expr $TEMP \* 4

echo RES1=$RES1
echo RES2=$RES2
echo RES3=$RES3

结果

RES1=20
RES2=20
RES3=20

例2:求出命令行给定的两个参数(整数)之和

编辑文件A.sh

#!/bin/bash
SUM=$[$1+$2]
echo $SUM	

执行

sh A.sh 7 13		//结果 20
posted @ 2021-11-29 20:39  Dinesaw  阅读(346)  评论(0编辑  收藏  举报