shell---基础语句
1.什么是shell?
shell 是linux的⼀个外壳,它包在linux内核的外⾯,为⽤户和内核之间的交互提供了⼀个接⼝。
当⽤户下达命令给操作系统时,实际上是把指令告诉shell,经过shell解释,处理后让内核作出相应的动作。
系统的回应和输出的信息也由shell处理,然后显⽰在⽤户的屏幕上。
2.什么是shell脚本?
当命令或者程序不在命令⾏执⾏,⽽是通过⼀个程序⽂件来执⾏,这个程序就称作 shell脚本。
也就是在shell脚本⾥内置了多条命令,语句,循环控制,然后将这些命令⼀次性执⾏完毕,这种通过⽂件执⾏命令的⽅式称为⾮交互式。
3.为什么使⽤shell脚本?
(1) 适合处理操作系统底层的业务,有众多系统命令为其做⽀撑
(2)适合处理纯⽂本⽂件,linux中许多服务配置⽂件,启动脚本,都是纯⽂本
(3)linux 系统脚本⽤shell 开发更简单。
4.如何查看系统默认shell?
⽅法⼀:cat /etc/passwd | head -1
⽅法⼆:grep root /etc/passwd
⽅法三:echo $SHELL
>>># 5.  脚本格式  >>>>>###
#!/bin/bash -------指定解释器:由哪个程序来执⾏脚本内容
if [ ];then                  #!:幻数
fi
>>>#  6.  脚本执⾏⽅法    >>>>##
1. sh script.sh | bash script.sh  在没有执⾏权限时
2. path/script.sh | ./script.sh  绝对路径,当前⽬录下
3.source script.sh | . script.sh
sh 与 ./  在执⾏完成脚本之后
. 会把执⾏完的函数值或变量值传回到⽗shell继续使⽤
>>>      7.变量  >>>>>
环境变量,系统已经定义好,不⽤⾃⼰定义
普通变量,需要⾃⼰定义
定义变量,需要双引号
定义普通变量a
a=hello
echo $a
单引号默认不解析------适合于原样输出
双引号------解析
>>>###        8.特殊变量      >>>>#### $0:
获取脚本⽂件名,如果执⾏时包含路径,则输出脚本路径
$n(n>0):
表⽰输出脚本后紧跟的N个字符串
[root@server mnt]# cat westos.sh
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
[root@server mnt]# sh westos.sh  {a..z}
a b c d e f g h i j
$#:
后⾯接的参数的个数
$?:
检测上⼀条命令是否执⾏成功
0-----表⽰执⾏成功
⾮0---表⽰执⾏失败
$$
当前进程号
echo $$
>>####  9.  read ⽤法        >>>#### [root@server mnt]# read str
westos hello
[root@server mnt]# echo $str
westos hello
[root@server mnt]# read -p "请输⼊⼀个整数:" i
请输⼊⼀个整数:10
>>      10.  将命令的结果赋值给变量        >####
⽅法⼀.[root@desktop mnt]# CMD=$(ls -l)
[root@desktop mnt]# echo $CMD
⽅法⼆.[root@sdesktop mnt]# i=$’ls -l‘
>>>>  11. 打包⽇志 >>>>### date +%F--------显⽰年⽉⽇
tar zcf log_$(date +%F). /var/log/  #打包
>>>      12. 计算变量的值  >>####
a=123
[root@server mnt]# expr $a + 10
133
[root@server mnt]# expr $a - 10
113
shell最简单脚本
[root@server mnt]# expr $a \* 10
1230
[root@server mnt]# expr $a / 10
12
[root@server mnt]# expr $a % 10
3
2.$[ ]  $(( ))
$[root@server mnt]# echo $[a+10]
20
[root@server mnt]# echo $[a-10]
[root@server mnt]# echo $[a*10]
100
[root@server mnt]# echo $[a/10]
1
[root@server mnt]# echo $[a%10]
[root@server mnt]# echo $((a+10))
20
[root@server mnt]# echo $((a-10))
3.let 命令,变量值会变化,注意:在执⾏后会保存新的值[root@server mnt]# let a+=10
[root@server mnt]# echo $a
20
[root@server mnt]# let a-=10
[root@server mnt]# echo $a
10
[root@server mnt]# let a*=10
100
[root@server mnt]# echo $a
100
[root@server mnt]# let a/=10
[root@server mnt]# echo $a
10
[root@server mnt]# let a%=10
[root@server mnt]# echo $a
4.⼩数运算bc (scale=n 表⽰保留n 位⼩数)
[root@server mnt]# echo "scale=4;1.23*4.56" | bc 5.6088
[root@server mnt]# echo "scale=2;1.23*4.56" | bc 5.60
[root@server mnt]# echo 1.2+3.4 | bc
4.6
[root@server mnt]# echo 1.23+4.56 | bc
5.79
5.加减乘除平⽅取余脚本
平⽅a**2
⽴⽅a**3
脚本:取a=10 b=20 对a b 分别做加减乘除平⽅取余等等:
#!/bin/bash
a=10
echo a=$a
b=20
echo b=$b
echo a+b="$[a+b]"
echo a-b="$[a-b]"
echo a*b="$[a*b]"
echo a/b="$[a/b]"
echo a**b="$[a**b]"
执⾏脚本:
脚本:
计算两个数的加减乘除,让⽤户输⼊:
#!/bin/bash
read -t 5 -p "please input  number a b : " a b
echo "a+b=$[a+b]"
echo "a-b=$[a-b]"
echo "a*b=$[a*b]"
echo "a/b=$[a/b]"
echo "a**b=$[a**b]"
echo "a%b=$[a%b]"
# - t 5  表⽰等五秒之后不输⼊,⾃动退出
执⾏脚本:
>>>##      13 ⽂本处理    >>#### 1.字符处理
grep , egrep
grep

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论