Shell基础——四、五

四、Bash的变量

用户自定义变量

1.什么是变量
  ● 变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。

2.变量设置规则
  ● 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。如果变量名是“2name”则是错误的。
  ● 在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
  ● 变量用等号连接值,等号左右两侧不能有空格。
  ● 变量的值如果有空格,需要使用单引号或双引号包括。
  ● 在变量的值中,可以使用“\”转义符。
  ● 如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“$变量名”或用${变量名}包含。
  ● 如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
  ● 环境变量名建议大写,便于区分。

3.变量分类
  ● 用户自定义变量
  ●环境变量:这种变量中主要保存的是和系统操作环境相关的数据。
  ● 位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。
  ● 预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

4.▲本地变量(用户自定义变量)

变量定义:
[root@localhost ~]# name="shen chao"

变量叠加:
[root@localhost ~]# aa=123 
[root@localhost ~]# aa="$aa"456       #123456
[root@localhost ~]# aa=${aa}789       #123456789

变量调用 :
[root@localhost ~]# echo $name  

变量查看 :
[root@localhost ~]# set   #查看当前系统全部变量

变量删除
[root@localhost ~]# unset name
例:unset aa

环境变量

1.环境变量是什么
   用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效

注:pstree是以树结构显示进程(–display a tree of processes)

2.设置环境变量
export 变量名=变量值                     #申明变量
env                                                  #查询(环境)变量
unset 变量名                                   #删除变量

3.系统常见环境变量
● PATH:系统查找命令的路径
[root@localhost ~]# echo $PATH /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin: /sbin:/bin:/usr/sbin:/usr/bin:/root/bin

● PATH="$PATH":/root/sh              #PATH变量叠加

● PS1:定义系统提示符的变量
\d:显示日期,格式为“星期 月 日”
\h:显示简写主机名。如默认主机名“localhost”
\t:显示24小时制时间,格式为“HH:MM:SS”
\T:显示12小时制时间,格式为“HH:MM:SS”
\A:显示24小时制时间,格式为“HH:MM”
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
\#:执行的第几个命令
\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”

以上的改动都只是临时生效,想永久生效需要写入配置文件。

位置参数变量

1.位置参数变量(预定义变量的一种,只不过比较多就单独拿出来)
在这里插入图片描述

例1:
#!/bin/bash 
num1=$1 
num2=$2 
sum=$(( $num1 + $num2))         #变量sum的和是num1加num2   
echo $sum                       #打印变量sum的值


例2: 
#!/bin/bash 
echo "A total of $# parameters"      #使用$#代表所有参数的个数     
echo "The parameters is: $*"         #使用$*代表所有的参数     
echo "The parameters is: $@"        #使用$@也代表所有参数


例3:$*与$@的区别 
#!/bin/bash 
for i in "$*"                      #$*中的所有参数看成是一个整体,所以这个for循环只会循环一次         
do                 
echo "The parameters is: $i"         
done 
x=1 
for y in "$@"                #$@中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次        
do                
echo "The parameter$x is: $y"                
x=$(( $x +1 ))       
done

预定义变量

1.预定义变量
在这里插入图片描述

#/bin/bash
   
echo "The current process is $$" 
#输出当前进程的PID。 
#这个PID就是variable.sh这个脚本执行时,生成的进程的PID   

find /root -name hello.sh & 
#使用find命令在root目录下查找hello.sh文件 
#符号&的意思是把命令放入后台执行,工作管理我们在系统管理章节会详细介绍 

echo "The last one Daemon process is $!"

2.接收键盘输入
[root@localhost ~]# read [选项] [变量名]
                                          -p “提示信息”:在等待read输入时,输出提示信息
                                          -t 秒数: read命令会一直等待用户输入,使用此选项可以指定等待时间
                                          -n 字符数: read命令只接受指定的字符数,就会 执行
                                          -s: 隐藏输入的数据,适用于机密信息的输入

例:
#!/bin/bash 
 
read -t 30 -p "Please input your name: " name 
#提示“请输入姓名”并等待30秒,把用户的输入保存入变量name中 
echo "Name is $name "  
read -s -t 30 -p "Please enter your age: " age 
#年龄是隐私,所以我们用“-s”选项隐藏输入 
echo -e "\n" 
echo "Age is $age "  
read -n 1 -t 30 -p "Please select your gender[M/F]: " gender
#使用“-n 1”选项只接收一个输入字符就会执行(都不用输入回车) 
echo -e "\n" 
echo "Sex is $gender"

五、Bash的运算符

▲数值运算与运算符

1.declare声明变量类型 
[root@localhost ~]# declare [+/-][选项] 变量名 
                              -: 给变量设定类型属性  
                              +:  取消变量的类型属性  
                             -i:  将变量声明为整数型(integer)  
                             -x:  将变量声明为环境变量  
                             -p:  显示指定变量的被声明的类型 


2.数值运算
方法1 :
[root@localhost ~]# aa=11 
[root@localhost ~]# bb=22 #给变量aa和bb赋值
[root@localhost ~]# declare -i cc=$aa+$bb
方法2:expr或let数值运算工具(不推荐用这种) 
[root@localhost ~]# aa=11 
[root@localhost ~]# bb=22 #给变量aa和变量bb赋值     
[root@localhost ~]# dd=$(expr $aa + $bb)    #dd的值是aa和bb的和。注意“+”号左右两侧必须有空格

方法3:“$((运算式))”或“$[运算式]” (推荐)
[root@localhost ~]# aa=11 
[root@localhost ~]# bb=22 
[root@localhost ~]# ff=$(( $aa+$bb )) 
[root@localhost ~]# gg=$[ $aa+$bb ]

3.运算符
在这里插入图片描述

例:
[root@localhost ~]$ aa=$(( (11+3)*3/2 ))  #虽然乘和除的优先级高于加,但是通过小括号可以调整运算优先级

[root@localhost ~]$ bb=$(( 14%3 ))  #14不能被3整除,余数是2

[root@localhost ~]$ cc=$(( 1 && 0 )) #逻辑与运算只有想与的两边都是1,与的结果才是1,否则与的结果是0

变量测试与内容替换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值