7.4Shell基础-Bash变量——linux

tech2023-12-14  74

一、 用户自定义变量

1. 什么是变量 变量是计算机内存的单元,其中存储的值可以改变

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

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

4. 本地变量 变量定义:[root@localhost ~]# name=”shen chao” 变量叠加:[root@localhost ~]# aa=123 [root@localhost ~]# aa=”KaTeX parse error: Expected 'EOF', got '#' at position 56: …ot@localhost ~]#̲ aa={abc}789 (现在aa的值为123456789) 变量调用:[root@localhost ~]# echo $name 变量查看:[root@localhost ~]# set 变量删除:[root@localhost ~]# unset name

二、 环境变量

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

2. 设置环境变量 [root@localhost ~]# export 变量名=变量名 申明变量 [root@localhost ~]# env 查询变量 [root@localhost ~]# unset 变量名 删除变量

3.系统常见的环境变量 PATH:系统查询命令的路径 [root@localhost ~]# echo $PATH

[root@localhost ~]# PATH=”$PATH“:/root/sh PATH叠加 PS1:定义系统提示符的变量

范例:[root@localhost ~]# PS1=’[\u@\t \w]$ ‘ 则在[ ]中会显示当前用户名、当前24小时制时间、当前所在目录的完整路径

三、 位置参数变量

位置参数变量 范例: [root@localhost ~]# mkdir sh [root@localhost ~]# mv *.sh sh/ 把所有的.sh脚本都移动到sh当中 [root@localhost ~]# vi canshu1.sh #!/bin/bash num1=$1 num2= 2 s u m = 2 sum= 2sum=(( n u m 1 + num1+ num1+num2)) 变量sum的和是num1加num2 echo $sum 打印变量sum的值 [root@localhost ~]# chmod 755 canshu1.sh [root@localhost ~]# cd sh [root@localhost sh]# ./canshu1.sh 1 2 1赋值给了$1, 2赋值给了$2 Sum is 3

范例: [root@localhost ~]# mkdir sh [root@localhost ~]# mv *.sh sh/ 把所有的.sh脚本都移动到sh当中 [root@localhost ~]# vi canshu1.sh

#!/bin/bash if i in “$*do echo $i doe if y in “$@” do echo $y done

[root@localhost ~]# chmod 755 canshu1.sh [root@localhost ~]# cd sh [root@localhost sh]# ./canshu1.sh 1 2 3 123 1 2 3

四、 预定义变量

1. 预定义变量

$! 后台运行的最后一个进程的进程号(PID)

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

#!/bin/bash Read -t 30 -p “输入你的名字:“ name 会提示”输入你的名字”,并等待30s Echo “你的名字是 $name” Read -t 30 -p “请输入你的年龄:” age 会提示”请输入你的名字”,并等待30s Echo “你的年龄 $age” Read -n 1 -p “你的性别(M/F):“ gender 输入一个字符(M或F)就会执行 Echo -e “\n” Echo “性别: $gender

五、 数值运算与运算符

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

2. 数值运算 方法1: [rootlocalhost ~]# aa=1 [rootlocalhost ~]# bb=2 [rootlocalhost ~]# declare -i cc= a a + aa+ aa+bb [rootlocalhost ~]# echo $cc 3

方法2: [rootlocalhost ~]# aa=1 [rootlocalhost ~]# bb =2 [rootlocalhost ~]# cc=$(expr $aa + $bb) [rootlocalhost ~]# echo $cc 3

方法3: “((运算式))“或”“[ a a + aa+ aa+bb] [rootlocalhost ~]# aa=1 [rootlocalhost ~]# bb=2 [rootlocalhost ~]# cc= ( ( (( ((aa+ b b ) ) 或 c c = bb)) 或 cc= bb))cc=[ a a + aa+ aa+bb] [rootlocalhost ~]# echo cc 3 3. 运算符 (优先级13>优先级10) 范例: $((运算式))

[rootlocalhost ~]# aa=$(((1+3)*3/2)) [rootlocalhost ~]# echo $aa 6

六、 变量测试与内容替换

例子1:测试v=$ {y-新值} [rootlocalhost ~]# unset y 删除变量y [rootlocalhost ~]# x=$ {y-new} [rootlocalhost ~]# echo $x new [rootlocalhost ~]# y=””

[rootlocalhost ~]# x=$ {y-new} [rootlocalhost ~]#echo $x

[rootlocalhost ~]# y=old [rootlocalhost ~]# x=$ {y-new} [rootlocalhost ~]#echo $x old

最新回复(0)