【Linux】快速入门shell编程

每天都得进步,哪怕是一点!

一.shell基本介绍

1.基本介绍

shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求的以便运行程序的界面系统级程序,用户可以用shell来启动,挂起,停止甚至是编写一些程序

2.shell脚本的执行要求

①脚本以#!/bin/bash开头 【使用bash进行解释】
②脚本需要有可执行权限

3.脚本的常用执行方式

①添加可执行权限,直接运行
②没有可执行权限,sh+脚本名【也可执行】

二.shell变量

1.基本介绍

①Linux shell中的变量分为系统变量和用户自定义变量
②常用的系统变量有:$HOME $PWD $SHELL $USER 等
③命令行中使用 set 可以查看当前shell中所有的变量

2.shell变量的定义和撤销

①定义变量:变量名=值 【注意:声明变量时,等号两边不能有空格
②撤销变量:unset 变量名
③声明静态变量:readonly 变量 【注意:静态变量不能unset

3.定义变量的规则

①变量名称可以有字母,数字,下划线组成。不能以数字开头
②定义变量时,等号两边不能有空格
③变量名称一般为大写

4.将命令的结果赋值给变量

①A=`ls -la` 【反引号】 运行里面的命令,并把结果返回给变量A
②A=$(ls -la) $符号等价于反引号
在这里插入图片描述

5.设置环境变量

①export 变量名=变量值 【让shell变量输出为环境变量】
②source 配置文件 【让修改后的环境变量立即生效】
③echo $变量名 【查询环境变量的值】
在这里插入图片描述
在这里插入图片描述
6.代码注释
①单行注释 #
②多行注释
:<<!
内容
内容
!

7.位置参数变量

当我们执行一个shell脚本时,如果希望获取命令行的参数信息,就可以使用位置参数变量,比如:./myShell.sh 100 200,这个就是一个执行shell的命令行,可以在myShell脚本中获取到参数信息

变量说明
$nn为数字,$0代表命令本身,$1-$9代表一个到第九个参数,十个或十个以上的的参数需要使用大括${10}
$*功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
$@功能描述:这个变量也代表命令行中所有的参数,$@把每个参数区分对待
$#功能描述:这个变量代表命令行中所有参数的个数
8.预定义变量

就是shell设计者事先已经定义好的变量,可以直接再shell脚本中使用

变量说明
$$当前进程的进程号(PID)
$!后台运行的最后一个进程的进程号(PID)
$?最后一次执行的命令的返回状态,如果返回0,就代表该命令正确执行,非0就代表不正确执行
9.shell中的运算符

①$((运算式)) 或者 $[运算式]
②`expr m + n` 注意:需要用反引号引起来,运算符两边需要有空格
③* 注意乘号需要使用转义符号 \,其他符号正常使用

#!/bin/bash
#计算A加B的值
A=100
B=200
#方式一
echo "A+B= $(($A+$B))"

#方式二
echo "A+B= $[$A+$B]"

#方式三
echo "A+B= `expr $A + $B`"

#*乘号需要使用转义符
echo "A+B= `expr $A \* $B`"

执行脚本
在这里插入图片描述

三.流程控制-条件控制

1.条件判断基本语法

①[ condition ] 注意condition前后需要有空格
②非空返回true,可以使用$?验证,0为true,>1为false
③应用实例
[ hello ] 返回true
[] 返回false

④三元表达式:
[ condition ] && echo ok || echo nook
说明:条件判断为真输出ok,为假输出nook

2.常用的条件判断 重点

2.1.字符串比较

= 等于

2.2.两个整数的比较

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

-a 与
-o 或
! 非

if [ $score -gt 100 -o $score -lt 0 ]
then
        echo "参数有误!"
        exit
fi
2.3.按照文件权限进行判断

-r 可读
-w 可写
-x 可执行

2.4.按照文件类型进行判断

-f 文件存在并且是一个常规的文件
-e 文件或目录存在
-d 文件存在并且是一个目录

2.5.基本案例
#!/bin/bash
 #案例一:判断"ok" 是否等于 "ok"
if [ "ok" = "ok" ]
then
        echo "相等equal"
fi
 
 #案例二:判断 23 是否大于 22
if [ 23 -ge 22 ]
then
        echo "23 大于 22"
fi

 #案例三:判断当前目录下是否存在aaa.txt文件
if [ -e ./aaa.txt ]
then
        echo "存在"
fi

3.if判断语句

3.1.基本语法

注意:[ 条件判断式 ] 中两边都有空格

 if [ 条件判断式 ] 
 then
	程序
 elif [ 条件判断式 ]
 then
	程序
 fi
3.2.基本案例
#!/bin/bash
#成绩通过位置参数获取
#输出成绩,如果大于60输出及格了,否则输出不及格
sorce=$1
if [ $sorce -ge 60 ]
then
        echo "及格了"
elif [ $sorce -lt 60 ]
then
        echo "不及格"
fi

4.case判断语句

4.1.基本语法
 case $变量名 in
"值1")
	程序
 ;;
"值2")
	程序
 ;;
 * )
	其他值进入此分支
 ;;
 esac
4.1.基本案例
#!/bin/bash
#输出数字,如果为1,输出周一,如果为2,输出周二,其他数字,输出其他
case $1 in
"1")
        echo "周一"
;;
"2")
        echo "周二"
;;
*)
        echo "other"
;;
esac

四.流程控制-循环控制

1.for循环

1.1.for循环基本语法1
 for 变量 in 值1 值2 值3
do
	程序
done
1.2.语法1的基本案例
#!/bin/bash
#求出位置参数的和  
sum=0   
for i in $@
do           
        sum=$[$sum+$i] 
        echo "$i"
done
echo "结果为 $sum" 
2.1.for循环基本语法2
 for (( 初始值;循环控制条件;变量变化 ))
 do
	程序
 done
2.2.语法2的基本案例
#!/bin/bash
#求出1-100的和 
sum=0
for ((i=0;i<=100;i++))
do  
        sum=$[$sum+$i]
done 
echo "1-100的和为:$sum"

2.while循环

2.1.while基本语法
 while [ 条件判断 ]
 do
	程序
 done
2.1.while基本案例
#!/bin/bash
#输出一个数n,求出1-n的和
sum=0
n=$1
while [ $n -gt 0 ]
do
        sum=$[$sum+$n]
        n=$[$n-1]
done
echo "$sum"

五.read读取控制台输入

1.基本语法

read 【选项】(参数)
选项说明
-p指定读取值时的提示符
-t指定读取值时,等待的时间(秒),如果没有在指定的时间内输入,就不再等待了

1.基本案例

#!/bin/bash
 #读取控制台的值
read -p "请输入一个值:" NUM1
echo "你输出的值为: $NUM1"

在这里插入图片描述

#!/bin/bash
 #三秒钟后自动退出
read -t 3 -p "3秒内输入" NUM2
echo "$NUM2"

在这里插入图片描述

五.shell函数基础

shell函数和其他编程语言一样,有系统函数,也可以自定义函数

5.1.常用系统函数

①basename 【pathname】【suffix】
功能:返回完成路径最后 / 部分,常用于获取文件名

②dirname 文件绝对路径
功能:返回完成路径最后 / 的前面部分,常用于返回路径部分

5.2.自定义函数基本语法

 [function] function[()]{
	Action;
	[return int;]
}

5.3.函数入门案例

#!/bin/bash
#编写一个函数,用户计算两个数的和
function getSum(){
        SUM=$[$N1+$N2]
        echo "结果是:$SUM"
}

read -p "请输入第一个数:" N1
read -p "请输入第二个数:" N2
getSum $N1 $N2
  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值