小白的Shell学习记录

86 阅读2分钟

Shell

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Shell脚本入门

1.1 脚本格式

脚本以==#!/bin/bash==开头(指定解析器)

1.2 执行脚本文件

下图示例为常用的脚本执行方法

image-20231011173704190

source 脚本文件名也是常用的一种执行方法

Shell变量

2.1 常用系统变量

HOME, \PWD $SHELL ,$USER

2.2 常见操作

  • 查看系统变量的值

​ echo $HOME

  • 显示当前Shell中所有的变量

​ set

2.3 shell变量的定义

  • 基本语法
  1. 定义变量:变量名=值
  2. 撤销变量: unset 变量
  3. 声明静态变量 : readonly变量,注意:不能unset
  • 定义变量的规则
  1. 变量的名称可以由字母,数字和下划线组成,但是不能以数字开头
  2. 等号两侧不能有空格
  3. 变量名称一般习惯为大写

image-20231014155250418

2.4 设置环境变量

  • 基本语法
  1. export 变量名=变量值(将shell变量输出为环境变量/全局变量)
  2. source 配置文件 (让修改后的配置信息立即生效)
  3. echo $变量名 (查询环境变量的值)

image-20231014160826990

在输出TOMCAT_HOME 环境变量前,需要让其生效 source/etc/profile

  • shell脚本的多行注释
:<<! 
内容
!

2.5 位置参数变量

image-20231014161913613

shcode脚本

#!/bin/bash
echo "0=$0 1=$1 2=$2"
echo  "所有的参数:$*"
echo "$@"
echo "参数的个数=$#"

终端展示

image-20231014172203410

2.5 预定义变量

image-20231014173211857

2.6 运算符

  • 基本语法
  1. ((运算式))” 或“\[运算式]” 或者expr m + n //expression
  2. 注意expr运算符间要有空格,如果希望将expr的结果赋给某个变量格式为 ==RES=`expr 运算式`==
  3. expr m - n
  4. expr \*, /, % 乘,除,取余

2.7分支语句

  • 判断语句基本语法

[ condition ] (注意condition前后都要有空格)

非空返回true,可使用$?验证(0位true,>1为false)

常用的判断条件

判断符号判断语义
=字符串比较
==两个整数的比较==
-lt小于
-le小于等于
-eq等于
-gt大于
-ge大于等于
-ne不等于
==按照文件权限进行判断==
-r有读的权限
-w有写的权限
-x有执行的权限
==按照文件类型进行判断==
-f文件存在并且是一个常规的文件
-e文件存在
-d文件存在并是一个目录
  • 基本语法
if [ 条件判断式 ]
then
代码
elif [ 条件判断式 ]
then
代码
fi

2.8 case语句

  • 基本语法

下方为输入数字判断星期

case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other..."
;;
esac

2.9 for循环

  • 从1加到指定变量示例
SUM=0
for(( i=1; i<=$1; i++))
do
SUM=$[$SUM+$i]
done
echo "总和SUM=$SUM"
  • * 与\@的区别
for i in "$@"
do
	echo "num is $i"
done

$*执行结果

image-20231016132036392

$@执行结果

image-20231016132109215

2.10 while循环

从1加到指定数

SUM=0
i=0
while [ $i -le $1 ]
do
	SUM=$[$SUM+$i]
	i=$[$i+1]
done
echo "执行结果=$SUM"

while 和[有空格 , 条件判断式和[ 也有空格

read获取控制台输入

十秒内输入一个数,并打印出来

read -t 10 -p "请输入一个数NUM2=" NUM2
echo "你输入的NUM2=$NUM2"

-p :指定读取值时的提示符

-t :指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待

Shell函数

系统函数

  • basename

去除文件名前缀,.txt 表示去除的后缀

basename /home/aaa/test.txt .txt

结果为test

  • dirname

返回拿到文件名前面的路径部分

自定义函数

SUM=0
# 定义函数getSum
function getSum() {
	SUM=$[$n1+$n2]
	echo "和=$SUM"
}
#输入两个值
read -p "请输入一个数n1=" n1
read -p "请输入一个数n2=" n2
#调用自定义函数
getSum $n1 $n2