0
点赞
收藏
分享

微信扫一扫

Linux高阶—shell脚本编程(六)

他说Python 2022-05-04 阅读 216
linux

 ​ 目录

一、学习Shell脚本编程前,先学习脚本三个变量:系统变量、用户变量、环境变量。

二、特殊字符:

三、声明变量:

四、if语句逻辑运算符:

五、for 语句循环:

六、while语句循环:


一、学习Shell脚本编程前,先学习脚本三个变量:系统变量、用户变量、环境变量。

系统变量:系统变量通常写在/etc/profile或/etc/profile.d中,对所有用户生效,常用变量列举了以下几点:

1、$?:表示脚本执行的状态,0表示正常,其他表示错误

2、$$:表示进程的id;Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)

3、$!:Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)

4、$0:表示执行的脚本名称

5、$1:表示第一个参数

6、$2:表示第二个参数

7、$*:表示执行脚本传入参数的列表(不包括$0,一个参数总体)

8、$@:表示执行脚本传入参数的所有个数(不包括$0,多个参数个体)

9、$#:表示执行脚本传入参数的个数

理解系统变量的含义:

#!/bin/sh
MY_SHELL_PATH=`dirname $0`
echo "print shell script location:"
echo ${MY_SHELL_PATH}
echo "====================================" 
echo "enter shell script location:${MY_SHELL_PATH}"
cd `dirname $0`
echo "list current directory content:"
ls -ltr
echo "===================================="
echo "shell script name=$0"
echo "===================================="
echo "first args=$1"
echo "====================================" 
echo "second args=$2"
echo "===================================="
echo "arguments number=$#"
echo "===================================="
echo "arguments list content=$@"
echo "===================================="
echo "arguments list content=$*"
echo "===================================="
echo "the process id is " "$$"
echo "===================================="
echo "the shell execute return value is " "$?"
echo "===================================="
echo "the all paramters:"
for i in "$@"
  do
    echo $i
  done
echo "===================================="
echo "the all paramters:"
for i in "$*"
  do
    echo $i
  done
echo "===================================="

https://file.cfanz.cn/uploads/png/2022/05/04/12/E89c61BPce.png

区分$@与$*,通过for循环结果判断如下:

https://file.cfanz.cn/uploads/png/2022/05/04/12/2T12JdR9b5.png

用户变量:用户变量通常写在用户的个人配置文件~/.profile中,只对当前用户生效,用户定义的变量名必须由字母,数字及下划线组成,并且变量名的第一个字符不能为数字,常用变量列举了以下几点:

1、加载环境变量:export JAVA_HOME=/opt/jdk1.8

2、自定义变量:export aa=22

环境变量:则主要是在程序运行时需要设置, 关闭则变量消失,一般会添加到用户变量文件里,列举了以下几点:

1、PATH:命令所示路径,以冒号为分割。

2、HOME:打印用户家目录。

3、SHELL:显示当前shell类型。

4、USER:打印当前用户名。

5、ID:打印当前用户ID信息。

6、PWD:显示当前所在路径。

7、TERM:打印当前终端类型。

8、HOSTNAME:显示当前主机名。

二、特殊字符:

\                 ##转译单个字符

""                ##弱引用,批量转译""中出现的字符,不能转译 \ ` ! $

''                ##强引用,批量转译''中出现的字符

``                ##将''中命令的输出信息,赋值给变量,同 $()

${}               ##变量声明,在需要时,用来确定变量边界

$?                ##是命令在执行完成后产生的退出值,当$?=0时表示命令没有错误输出

三、声明变量:

declare [+/-][选项] 变量名

选项:
-:给变量舍得类型属性
+:取消变量的类型属性
-a:将变量声明为数组型(x、y)
-i:将声明的变量视为整数,对它赋值时会进行算术求值,不过仅支持最基本的数学运算,不支持逻辑运算、自增自减等,所以很少使用。
-x:将变量声明为环境变量
-r:将变量声明为只读变量
-p:查看变量的被声明的类型

四、if语句逻辑运算符:

-e 通过文件名文件是否存在

-f 通过文件名判断是否是文件

-d 通过文件名判断是否为目录                            

-eq 判断两个数值是否相等

-nq 判断两个数值是否不相等

-gt 判断第一个数值是否大于第二个数值

-lt 判断第一个数值是否小于第二个数值

-ge 判断第一个数值是否大于等于第二个数值

-le 判断第一个数值是否小于等于第二个数值                         

-z 判断字符串是否是空串

-n 判断字符串是否不是空串

=  判断两个字符串是否相等

!=判断两个字符串是否不相等

-a (and)相等于&&

-o (or)相当于||

​理解if 判断:

#!/bin/bash
read -p "请输入一个数字:" num
# 实现判断输入的字符是数字还是字母或者是其他符号
function isNum(){
if [[ $1 =~ ^[a-zA-Z]+$ ]] # 正则匹配多个输入的字符
then
  echo "$1 是纯字母"
  return 1
elif [[ $1 =~ ^[0-9]+$ ]] # 匹配多个数字
then
  echo "$1是纯数字"
  return 0
else
  echo "$1是其他字符"
  return 1
fi
}
# 调用函数
isNum $num
#判断函数的返回结果
if [ $? == 0 ]
then
  if [ $num -gt 10 ]
  then 
   echo "$num 大于10"
  elif [ $num -eq 10 ]
  then  
   echo "$num 等于10"
  else
   echo "$num 小于10"
  fi
else
 echo "输入内容不符合要求"
fi
echo "结束!"

五、for 语句循环:

#!/bin/bash
declare -i SUM=0
for i in {1..100}; #或者 for i in `seq 1 100`
do
let SUM=$SUM+$i
done
echo "1+..+100=$SUM"

六、while语句循环:

echo "***猜商品价格是多少**"
read -p "输入你心里猜测的数" num
a=0
sum=0
price=$[$RANDOM % 1000 ]
while [ $a -eq 0 ]
do
let num++
    if [ $num -eq $price ];then
       echo "你猜对了"
       let a++
    elif [ $num -lt $price ];then
        echo "你猜小了"
    elif [ $num -gt $prie ];then
        echo "你猜大了"
    fi
done
 echo "你总共猜对了几次"

上一篇:Linux高阶—接口性能压测​jmeter(五)

下一篇:Linux高阶—企业shell脚本实战(七)

举报

相关推荐

0 条评论