```
1.1 用户自定义变量、
1.2 环境变量、
1.3 位置参数变量、
1.4 预定义变量、
```
1.1 用户自定义变量、
什么是变量?
变量是计算机内存的单元,其中可以存放任何值,变量当中的内容:可以是数字、字母、文件名、
一般是用变量来保存值的,使用变量保存信息、变量名等于变量值,
使用shell时可以随着变量名的传递进行变量值调用。
变量设置规则
变量名称可以有字母、数字和下划线组成,但是不能以数字开头,
在Bash中,变量的默认类型都是字符串行,如果要进行数值运算,则必须指定变量类型为数值型。
变量用等号连接值,等号左右两侧不能有空格。如果变量的值有空格,必须使用单引号或双引号包括。
在变量的值中,可以使用“\”转移符、让特殊符号失去作用。
如果需要增加变量的值,可以进行变量值的叠加,不过变量需要用双引号包含
"$变量名"或用${变量名}包含。
如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
[root@localhost~]# aa=$(date)
[root@localhost~]# echo $name
显示当前的时间
变量分类
用户自定义变量
环境变量:这种变量中主要保存的是和系统操作相关的数据。
位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,
变量作用也是固定的。
本地变量
变量定义
[root@localhost~]# name="liu he"
变量叠加
[root@localhost~]# aa=liuhe
[root@localhost~]# echo $aa
liuhe
[root@localhost~]# aa="$aa"456
[root@localhost~]# echo $aa
liuhe456
[root@localhost~]# aa=${aa}789
[root@localhost~]# echo $aa
liuhe456789
变量调用
[root@localhost~]# echo $name
liu he
变量查看
[root@localhost~]# set
变量删除
[root@localhost~]# unset name
1.2 环境变量
环境变量是什么?
用户自定义变量只在当前的shell中生效,而环境变量.会在当前shell和这个shell的.
所有子shell当中生效 。如果把环境变量写入相应的配置文件,那么这个环境变量
就会在所有的shell中生效。
设置环境变量
export 变量名=变量值
#申明为全局变量
export意思是说,把变量.申明为全局变量,让所有shell的子shell中都可以查看的到。
[root@localhost~]# bash 进入子shell
[root@localhost~]# exit 从子shell退回
[root@localhost~]# pstree 显示当前shell位置
略过
├─sshd───sshd───bash───pstree
[root@localhost~]# name=lh 本地变量
[root@localhost~]# export age=18 环境变量
[root@localhost~]# sex=male 本地变量
[root@localhost~]# export sex=male 环境变量是在本地shell及子shell中生效
[root@localhost~]# set 能查看所有的变量、本地.预定义.环境
[root@localhost~]# env 专门来查看环境变量的
[root@localhost~]# echo $age 调用环境变量
[root@localhost~]# unset age 删除环境变量
系统常见环境变量
PATH: 系统查找命令的路径
[root@localhost~]# echo $PATH
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:
/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost~]# vi hello.sh 新建执行脚本
#!/bin/bash
echo "hello world"
[root@localhost~]# chmod 755 hello.sh 赋予执行权限
[root@localhost~]# 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用户会显示提示符为“#”,如果是普通用户会显示提示符为“$”
[root@localhost~]# PS1='[\u@\t\w]\$ '
[root@localhost~]#
1.3 位置参数变量
位置参数变量
位置参数变量 作用
$n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要
用大括号包含,如${10}
$* 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
$@ 这个变量也代表命令行中所有的参数,不过$@$把每个参数区分对待
$# 这个变量代表命令行中所有的参数的个数
[root@localhost~]# mkdir sh 创建sh目录接收所有的脚本
[root@localhost sh]# vi canshu1.sh #创建第一个参数脚本
#!/bin/bash #标称是shell脚本
echo $0 #输出命令本身
echo $1
echo $2
echo $3
[root@localhost sh]# chmod 755 canshu1.sh 给脚本赋予执行权限
[root@localhost sh]# ./canshu1.sh 不加任何参数
./canshu1.sh 只有$0有数据仅打印命令本身
$123没有数据,
打印的是空行
[root@localhost sh]# canshu1.sh 11 22 33 11 22 33 作为脚本参数
./canshu1.sh
11
22
33
[root@localhost sh]# cat canshu1.sh
#!/bin/bash
echo $0 #$0代表命令本身
echo $1 #$1用来接收后面输入的第一个参数
echo $2 #$2用来接收后面输入的第二个参数
echo $3 #$3用来接收后面输入的第三个参数
这仅仅是位置参数变量的作用、 canshu1.sh用$0接收 11用$1接收 22$2 33$3
例子1:
[root@localhost sh]# vi canshu1.sh
#!/bin/bash
num1=$1 #写两个参数。把两个参数的值赋予变量
num2=$2
sum=$(( $num1+$num2 )) #要想数值运算必须加双小括号
#定义sum 变量sum的和是num1加sum2
echo $sum
#打印变量sum的值
[root@localhost sh]# cat canshu2.sh
#!/bin/bash
sum=$(( $1+$2 )) #没有给用户提示这两个变量输入数字,否则这个脚本不能
正确执行
echo "sum is : $sum" 而且这两个参数必须是数值、
- - - - - - - - - - - - -
[root@localhost sh]# chmod 755 canshu2.sh
[root@localhost sh]# ./canshu2.sh 11 22
sum is : 33
$n #就是把命令和命令后面跟的参数、传递给脚本中的$0--$数字代表的
位置参数变量、最主要的作用是把命令行和命令的参数传递到脚本当中
= = = = = = = = = = = = =
例子2:
[root@localhost sh]# vi canshu3.sh
#!/bin/bash
echo "A total of $# parameters" #使用$#代表所有参数的个数
echo "The parameters is:$*" #使用$*代表所有的参数
echo "The parameters is:$@" #使用$@也代表所有参数
[root@localhost sh]# chmod 755 canshu3.sh
[root@localhost sh]# ./canshu3.sh 11 222 333 44 55 66
6
11 222 333 44 55 66
11 222 333 44 55 66
Linux的Bash变量
最新推荐文章于 2024-07-08 14:59:34 发布