欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Shell基础(二)Bash变量

时间:2023-07-12
Shell基础(二)Bash变量

Bash变量

变量定义规则变量的分类用户自定义变量环境变量

用户自定义环境变量系统自带环境变量

PATH变量:系统查找命令的路径PS1变量:命令提示符设置LANG语系变量 位置参数变量预定义变量read—接受键盘输入declare声明变量类型 Bash变量 变量定义规则

变量名称可以由字母、数字、下划线组成,但是不能以数字开头,如果变量名是"2name",则是错误的。在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必须指定变量类型为数值型。变量用等号连接值,等号左右两侧不能有空格。变量的值如果有空格,需要用单引号或双引号,这里要注意双引号中"$"""反引号有特殊含义,单引号中括起来的内容都是普通字符。在变量的的之中,可以用""转义符。如果需要增加变量的值,那么可以进行变量值得叠加,不过变量需要用双引号包含"$ 变量名"或用${变量名}包含变量名。
例:

[root@localhost ~]# test=456[root@localhost ~]# test=123"$test"[root@localhost ~]# echo $test123456[root@localhost ~]# test=${test}789[root@localhost ~]# echo $test123456789

需要把命令的结果赋予变量时,需要使用反引号或"$()"将命令括起来。环境变量名建议大写,好区分。 变量的分类

用户自定义变量:这种变量是最常见的变量,有用户自由定义变量名和变量的值。环境变量:这种变量主要保存的是和系统操作环境中相关的数据,分为用户自定义环境变量和系统自带环境变量,用户自定义环境变量可以自定义变量名和变量的作用以及变量值,系统自带环境变量变量名是固定的,变量作用也是固定的。位置参数变量:这种变量主要就是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的。预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。 用户自定义变量

变量查看

[root@localhost ~]# set 选项

选项:

-u:如果设定此选项,调用未声明变量时会报错(默认无任何提示)-x:如果设定此选项,在命令执行之前,会把命令先输出一次不加选项时,set的命令就是查看一部分环境变量和所有自定义变量,另一部分环境变量可以用env命令查看。
例:

[root@localhost ~]# set -u[root@localhost ~]# echo $age-bash: age: 未绑定的变量

变量删除

[root@localhost ~]# unset 变量名

环境变量 用户自定义环境变量

用户自定义环境变量其实和用户自定义变量更相似,有一点不同是用户自定义变量不能在子Shell中使用,而用户自定义环境变量可以在子Shell中使用。

环境变量设置

#用export命令来声明环境变量[root@localhost ~]# export NAME="root"

环境变量的查询和删除
env命令和set命令的区别是,set命令可以查看所有变量,而env命令只能查看环境变量

#删除环境变量[root@localhost ~]# unset NAME#查找环境变量[root@localhost ~]# env | grep HOSTHOSTNAME=localhost.localdomain

系统自带环境变量 PATH变量:系统查找命令的路径

查询PATH环境变量的值

[root@localhost ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

往PATH变量添加路径

[root@localhost ~]# PATH="$PATH":/root/sh[root@localhost ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/sh

除了PATH中含有的路径,其他路径的命令都需要输入绝对路径运行命令。

PS1变量:命令提示符设置

[root@localhost ~]#

PS1是用来定义命令行提示符的,可以按自己的需求定义自己喜欢的提示符,PS1可以支持以下选项:
d:显示日期,格式为"星期 月 日"
H:显示完整的主机名。
h:显示简写的主机名。
t:显示24小时制时间。
T:显示12小时制时间。
A:显示24小时制时间。
@:显示24小时制时间。
u:显示当前用户名。
v:显示Bash的版本信息。
w:显示当前所在目录的完整信息。
#:执行的第几个命令。
$:提示符,root用户会显示提示符为"#",如果普通用户会显示提示符为" $"。

#修改PS1变量[root@localhost ~]# PS1='[u@h WA]$ '[root@localhost ~21:43]#

当然,这样修改只是暂时的,如果要长久修改需要修改配置文件/etc/bashrc。

LANG语系变量

LANG变量支持当前终端使用的语言。

[root@localhost ~]# locale -a #查看当前Linux支持的语系CC.utf8POSIXzh_CNzh_CN.gb18030zh_CN.gbk......[root@localhost ~]# echo $LANG #查看终端当前使用的语系zh_CN.UTF-8

位置参数变量 位置参数变量作用$nn为数字,$0表示命令本身, $1- $9表示第1到第9个参数,十以上的参数需要用大括号包含,如 ${10}。$*这个变量表示命令行中所有的参数, $*把所有的参数看成一个整体。$@这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待。$#这个变量代表命令行中所有参数的个数。

注:"$(())"代表数值运算。

$n

#! /bin/bash#加法运算count.sha=$1 #$1代表命令后输入的第1个变量b=$2 #$2代表命令后输入的第2个变量sum=$(($a+$b)) #"$(())中代表数值运算"echo $sumecho $0 #$0输出命令本身

程序运行:

[root@localhost ~]# ./count.sh 159 8791038./count.sh

$、 $@与 $#

#!/bin/bash#验证$*、 $@与 $#的作用echo "$* is $* "echo "$@ is $@ "echo "$# is $# "

程序运行:

[root@localhost ~]# ./para.sh 11 22 33 44$* is 11 22 33 44 #将输入的所有参数视为一个整体输出$@ is 11 22 33 44 #将输入的参数分开列出$# is 4 #计数总共输入了多少个参数

利用for循环观察$@与 $*的区别:

#!/bin/bashfor i in "$*" do echo $i doneecho "========================================="for y in "$@" do echo $y done

程序运行:

[root@localhost sh]# ./para2.sh 98 75 2198 75 21=========================================987521

预定义变量

$?:最后一次执行的命令的返回状态,如果上一条命令正确执行,返回值为0,如果没有正确执行,则返回值为非0。$$:当前进程的进程号(PID)。$!:后台运行的最后一个进程的进程号(PID)。

例:$?用法

[root@localhost sh]# lscount.sh for.sh hello.sh para2.sh para.sh[root@localhost sh]# echo $?0[root@localhost sh]# la-bash: la: 未找到命令[root@localhost sh]# echo $? #找不到命令时的返回值127

read—接受键盘输入

read命令可以在屏幕输出提示并读取输入的内容。
命令格式:

[root@localhost ~]# read 选项 变量名

选项:

-p “提示信息”:在等待read输入时,输出提示信息。-t:秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间。-n:字符数:read命令只接受指定的字符数,就会执行。-s:隐藏输入的数据。

变量名:
变量名可以自定义,如果不能指定变量名,会把输入保存入默认变量REPLY。
如果只提供了一个变量名,则整个输入行赋予该变量。
如果提供了一个以上变量名,则输入行分为若干字,一个接一个的赋予各个变量。

用Shell程序来实验read的功能:

#!/bin/bash#用read输入来实现加法计算read -t 30 -p "please input num1:" num1read -t 30 -p "please input num2:" num2sum=$(($num1+$num2))echo $sum

程序运行:

[root@localhost sh]# ./sum2.sh please input num1:78please input num2:96174

declare声明变量类型

使用declare命令可以声明变量的类型。
命令格式:

[root@localhost ~]# declare [-/+] 选项 变量名

选项:

-:给变量设定类型属性。+:取消变阿玲的类型属性。-a:将年两声明为数组型。-i:将变阿玲声明为整数型。-r:将变量声明为只读变量,注意,一旦声明为只读变量,既不能修改变量的值,也不能删除变量,甚至不能通过+r取消变量的只读属性。-x:将变量声明为环境变量。-p:显示指定变量的被声明的类型。

例:利用declare命令声明整型变量

[root@localhost ~]# num1=12[root@localhost ~]# num2=23[root@localhost ~]# declare -i sum=$num1+$num2[root@localhost ~]# echo $sum35

ps:尚硅谷linux视频课程学习笔记

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。