linux中esaadmin作用,Linux系统学习——shell编程入门篇学习

Linux 系统学习——shell编程入门学习

一、介绍:

1. shell是一个作为用户和linux系统间接口的程序,允许用户向操作系统输入需要执行的命令

2、执行脚本:

1、./文件名

2、sh 文件名

3、#source 文件名

3、在shell上 # 为注释

4、每个shell程序需要写在 #!/bin/sh 开始 ,相当于头文件 ,这是对shell声明

简单书写 :

#!/bin/sh//必须要带上这个 shell 声明

A="hello"// 这里不能 A = "hello" , 带有空格的话会识别错误

echo "A is"

echo $A

fd293be6a4954494ba70374777d0f3f7.png

注意:shell 在解释命令时的原则是第一个符号标记只能是程序或者命令,有空格的时候第一个符号标记就是“A”,当然就不成立了,而没有空格的时候,第一个标记是A=“hello world” ,shell 将解释为变量赋值指令,因此可以通过。

5、 文件结束后缀:

Linux :\n 为回车换行

windows : \r\n 为回车换行

二、重定向 > 或 >> 解析:

以 ll > aa 为例子

> 作用是 把 ll 内容写进 aa文件里头,但是里头原来的文件内容会被删除掉

f3bdc2e0bed45eb40278569ed163a75c.png

>> 作用是把 ll 内容写进 aa文件里头,但是里头原来的文件内容不会被删除掉,重新另外换行添加内容

管道 :|

ll | grep "s" // 通过管道 | ,查看 ll 下 含有 s 的内容

三、环境变量、系统变量 :

环境变量:

8c44af04bf4b95ce4073ba117723f01d.png

系统变量:

30567336051caa84906de2a40dabfce4.png

演示bb.sh:

#!/bin/sh

echo $0

echo $#

echo $1

echo $2

echo $3

0eff1edfcb8b647d90150c36c77a07c3.png

四、shell 常用Linux 指令 :

0eac65797308a5668696683d3528c337.png

以 mv 为例子 :

82676254403e57619be01c4c09958e96.png

键盘输入功能实现 (read):

#!/bin/sh

A=10

echo $A// 先打印 A =10 值

read A//从键盘读入数据

echo $A

结果 :

a2c2cb2fb199123aa519300409066cf0.png

五、语法结构

(1)条件判断:

if else

使用模式一:

#!/bin/sh

if test -f a.sh #如果成立就执行then

then #一定要加

echo "sucess"

else

echo "failed"

fi #一定要加结束符号

d4962665256924094384330aa5a61cba.png

常用这种:

#!/bin/sh

if [ -f a.sh ] // 格式 [ ] 左右两边都要一个空格

then

echo "yes"

else

echo "no"

fi

注意:

使用[ ]时,必须要在 [符号和被检查的条件之间留出空格,可以把符号看作和test样,test和后面的条件之间总是有一个空格。

代码最后不要忘了写 fi 来结束这个判断

5eb9c60dbaae64a086eacbdc07f80aa5.png

f04f93a4468e28b5b82286cf4c654023.png

#!/bin/sh

echo "please scanf you data,answr is yes or no"

read data

if [ $data = "yes" ]

then

echo "good"

else

echo "Fuck"

fi

52f86f287f806b764a4f675a33e2387d.png

多重条件 如c语言中的 if () else if () else :

#!/bin/sh

if [ 10 -lt 2 ]//如果 10 小于 2 ,才打印 good

then

echo "good"

elif [ 10 -gt 5 ]// 如果 10 大于5 ,打印 well

then

echo "well"

else

echo "NO"

fi

7b0290530c9928e4e39acb0bc9a7203f.png

abfa4bfb6eb97c1141deef1c203bc0e3.png

#!/bin/sh

if [ 3 -eq 4 ]

then

echo "yes"

else

echo "no"

fi

a936e8e94e10143dae64df2d56d2c8f3.png

55f7a86cfd424a24d17842ae26acb63e.png

#!/bin/sh

if [ -d b.txt ]

then

echo "yes"

else

echo "no"

fi

64a9b36cde8c52889be8f92b856442ca.png

(2)循环判断:

1、for循环 :

8bf8e44a99fda00e7c7bad2d4dcaf23b.png

#!/bin/sh

echo "please input data"

for data in 1 2 3

do

echo $data

done

ba94678de9e326cbf8e931e00f8ca355.png

2、while循环

#!/bin/sh

echo "input data"

#data=1

read data//从键盘输入data

while [ $data != 6 ]// 从键盘 输入data ,判断data 是否不等于 6

do

echo "again"

echo $data

data=$(($data+1))// data 依次相加 ,类似于C 语言中 data++

done//循环必带 结束符

exit 0

1ff0354ef72c7fb667fc2cb5098dfcd9.png

3、until :当满足循环条件的时候,直接跳出循环。而 while 循环是满足循环条件,继续执行循环条件里面的语句

#!/bin/sh

echo "input data"

data=5

until [ $data -le 6 ]

do

echo $data

data=$(($data+1))

done

echo "跳出循环"

exit 0

跳出循环,没有执行循环里面打印 data的值

c0f9c116402f3a6d2b2480a221b9762d.png

(3)选择语句(相当于c语言swich):

5113f4d7bd4f96de45711a3a0e94a635.png

#!/bin/sh

echo "请输入数据"

read data

case "$data" in

yes) echo "good";;#注意一定要两个 ;; 结尾

y) echo "nice";;

no) echo "fuck";;

n) echo "shift";;

esac# 选择语句必带

exit 0

9f18b841d8afce63037e23b9eb5c5a1c.png

注意每个模式都以 双分号 ;; 结尾,因为你可以在前后模式之间放置多条语句,所以需要使用一个双分号来标记前一个语句的结束和后一个语句的开始

(4)函数( 直接函数名字+() 来使用 )

f40f0fbd74b432501dc49beafa52a4bf.png

#!/bin/sh

foo()// 函数名字 + ()

{

echo $0 # 打印文件名字

echo $1 # 打印第一个参数

echo $2 # 打印第二个参数

}

echo $0 $1 $2

foo $1 $2 # 这里要给foo 函数 传参数 才会打印 $1 、$2

01cca1936487383c1af2052e5709543e.png

如果要在shell函数中声明局部变量,则要使用local关键字,局部变量的作用域则局限在函数范围内。

此外,函数还可访问全局作用范围内的其他shell变量。如果全局变量和局部变量出现了同名,则局部变量会覆盖全

例子:

#!/bin/sh

A="good"

foo()

{

local A="nice"

echo $A

}

echo "局部变量local作用:"

foo

echo "全局变量:"

echo $A

exit 0

33d894affa20d1d72712c3f75434abeb.png

(5)无限循环 指令 冒号 (:)

冒号(:)是一个空命令,它偶尔会被用于逻辑简化,相当于true的一个别名,由于它是内置命令,所以它的运行效率要比true高

while : 相当于while true

#!/bin/sh

fun()

{

while :

do

echo "gg"

done

}

fun

exit 0

0ef195f5ba40dbcb40c2fe478d06de5e.png

(6)break 跳出循环

#!/bin/sh

A=10

B=15

while [ $A -ne $B ]

do

A=$(($A+1))

if [ $A -eq "12" ]# 当 A = 12时 跳出循环

then

echo "good"

break; # 这个 ; 可加可不加

fi

done

exit 0

702c84f4e777b12f8adb81e0e95cee00.png

(7)函数返回值 return (在shell脚本,0表示返回成功,相当于 c语言的 1)

#!/bin/sh

yes_or_no()

{

echo "is your name $*?"

while true

do

echo "please enter yes or no"

read a

case "$a" in

y|yes) return 0;;# 在shell脚本,0表示返回成功,相当于 c语言的 1

n|no) return 1;;

* ) echo "error"

esac

done

}

echo "original parameters are $*"

if yes_or_no "$A" # shell脚本编程中,注意:Linux中返回0表示成功

then# $A 用一个变量 A 来存放返回值,用其他字符也可以

echo "hi"

else

echo "never mind"

fi

exit 0

a9b05e1f702ae172bc80009aab0522d4.png

(8)continue命令(和c语言功能差不多):

#!/bin/sh

rm -rf fred*

echo > fred1

echo > fred2

mkdir fred3

echo > fred4

for file in fred*

do

if [ -d "$file" ]

then

echo skipping the directory $file

continue

fi

done

echo first direcyory starting fred was $file

rm -rf fred*

070a13c4fe69fb9a0a38b035d9f23d9e.png

(9)exec命令:

将当前的shell替换为一一个不同的程序

exec wall"hello world"

将当前的shell替换为执行wall,exec后面的语句都不会执行了,因为当前的shell已经不复存在了

代码演示 :

#!/bin/sh

echo "lulu"

exec echo "hengheng"

echo "aa"

echo "bb"

c4ee865e59e30bf9a5b5b57f63f60b59.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值