Linux中的Shell脚本入门【JavaEE中的简单学习】

灵魂三问:

1.什么是shell脚本?

        shell是一门语言,和js类似,不需要经过编译就可以运行。

2.为什么要使用shell脚本?

        当在linux系统中要执行多条高频率的命令时,不能每次都Ctro  +  C、Ctro + V,可以通过一个可执行、可保存数据的文件将要高频执行的命令行保存起来,方便后续使用。

3.如何编写shell脚本?

        ↓ ↓ ↓ ↓ ↓ ↓ ↓

一、Shell脚本的语法


        Shell是一门语言,每一种语言都有自己的语法,例如:Java、C、C#等。学会Shell的语法,对于Shell脚本的编写至关重要。

1.shell中的系统预设变量


        常用系统变量包括:$USER$HOME$PWD$SHELL等,可以使用echo命令输出它们的值。使用set命令可以查看所有系统预定义变量。

2.用户自定义变量


        用户根据需求自定义的变量:username=admin,password=123456

        不论是系统预设变量还是自定义变量,都可以通过echo来进行输出。

        对于用户自定义的变量,可以通过unset进行撤销,即撤销前的变量可以正常使用,撤销后,变量无法使用,会报错!

3.定义静态变量


        Shell中的静态变量的定义是通过readonly来实现:readonly username=root

        定义好的静态变量无法被修改也无法撤销,只能使用。

4.语法规则详解


  • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。

  • 等号两侧不能有空格,衍生规则就是变量声明时必须初始化

  • 在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。

  • 变量的值如果有空格,需要使用双引号或单引号括起来。

  • 变量名区分大小写。

5.特殊变量


① $n

n是数字,$0代表当前脚本名称。从$1开始代表对应的脚本参数。从${10}开始数字需要使用{}括起来。

② $#

返回输入参数的个数

③ $*和$@

都能够返回全部参数,但是只有在循环中且放在引号中能够体现出它们的区别。

④ $?

返回上一条命令的执行结果。

  • 条件判断语句

    • 返回 0 表示 true

    • 返回 1 表示 false

  • 普通语句

    • 返回 0 表示成功

    • 返回非 0 数表示失败

二、Shell脚本中的几种逻辑语句

        1. Shell中的运算符


        Shell中运算符表达式的语法格式有两种:$((a+b))、$[a+b]

        运算的过程需要在指定的格式内,且前面要加上$符号。

 

     2.Shell中的条件判断


2.1基本语法

  • 写法1:test condition

  • 写法2:[ condition ]

    • 注意 condition 前后有空格

    • 空字符串视为 false,非空字符串视为 true

2.2 常用判断条件

数据类型写法单词含义
数值-ltless than小于
数值-leless equal小于等于
数值-eqequal等于
数值-gtgreater than大于
数值-gegreater equal大于等于
数值-nenot equal不等于
文件-rread判断当前用户是否可以读取该文件
文件-wwrite判断当前用户是否可以修改该文件
文件-xexecute判断当前用户对该文件是否有执行权限
文件-ffile判断当前文件是否存在并且是一个常规的文件
文件-eexistence判断文件是否存在
文件-ddirectory判断是否存在并且是一个目录

①判断条件语句是否成立:

 ②判断文件/目录的情况

 


3、Shell脚本的运行

        3.1 三元运算

在三元运算中,条件的语法格式和shell脚本内的格式是相同的,通过两个&符将条件与三元输出值连接,且true和false之间通过 || 进行连接。


 

3.2if判断

①单if的情况:

        在单if判断中,通过条件判断来决定要执行的代码,跟在then后的代码只有当条件为true时才会被执行。

②if……else的情况:

        在if……else的语句中,当if中的条件不为true时,则会执行else中then后的语句

③if…elif...的情况:

        当第一个条件不满足时,继续向下判断第二个条件,若都不满足,此时存在else的话执行else,不存在则不执行。

        3.2.1 单if

if [ 10 -gt 5 ]
then
echo "10大于5"
fi

        3.2.2 if...else...

if [ 10 -gt 5 ]
then
echo "10大于5"
else
echo "10小于5"
fi

        3.2.3 if...elif...

if [ 10 -gt 5 ]
then
echo "10大于5"
elif [ 10 -lt 5 ]
then
echo "10小于5"
else
echo "10等于5"
fi

3.3 case判断

case判断与java中的swtich-case比较相似,只是语法不同,通过对指定变量的判断,决定要执行的代码。

AGE=10
case $AGE in
"10")

//若满足,执行下面的语句
echo 10
;;
"20")

//若满足,执行下面的语句
echo 20
;;
*)
echo other

//若都不满足,执行下面的语句

echo 30
;;
esac

3.4 for循环

注意:do关键字是for循环开始,done是for循环结束。

① 简单for循环:在shell脚本内部写死的循环条件

for (( i=1;i<=10;i++ ))
do
echo $i
done

② 从外部传入循环长度:通过设置单个或多个参数,对for循环进行参数注入,获取循环结果

#!/bin/bash
# 如果需要使用外部数据,则需要把外部数据赋值给一个变量,不能在for语句中直接使用
len=$1
​
for (( i=1;i<=len;i++ ))
​
# 从do关键字开始是循环体开始
do
​
echo $i;
​
# 到done关键字为止是循环体结束
done

3.5 for in循环

for i in $*
do
echo $i
done

没有引号的时候$*和$@一样,加了引号就有区别

for i in "$*"
do
echo $i
done

上面代码输出的结果是:

 

"$*"会将所有元素当成一个值处理,所以不换行

"$@"将所有元素每一个都遍历一次进行处理,每输出一个元素都换行。

3.6 while 循环

在whlie循环中,通过条件判断在do循环体内执行相应的代码,进行相应的操作。

sum=0
start=1
while [ $start -le 100 ]
do
# 累加
sum=$[$sum+$start]
# start的值自增1
start=$[$start+1]
done
echo $sum

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值