shell脚本编程学习笔记2——Bash变量
1,变量简介
1,计算机内存单元
2,设置规则
字母数组下划线组成,不能以数字开头
Bash中,默认类型字符串型,变量类型可修改
2,Bash变量规则
1,变量用等号连接值,等号左右两侧不能有空格。 (Linux中空格代表命令之间的区分)
2,变量的值如果有空格,需要使用单引号或双引号包括。
3,在变量的值中,可以使用“\”转义符
4,如果需要变量拼接,那么可以进行变量值的叠加。不过变量需要用双引号包含 “$变量名”或用${变量名}包含。
5,如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令
6,环境变量名建议大写,便于区分
3,变量分类
1,用户自定义变量,保存环境当前shell
2,环境变量,主要保存和系统操作环境相关数据
3,位置参数变量,主要用来向脚本传递数据,不可自定义,作用固定
4,预定义变量,Bash中定义好的变量,变量名不可自定义,作用固定
1,用户自定义变量
1,简介
在本地定义的变量,只适用于当前shell
2,简单实例:
[root@iZwz9h901rvv69020rk7fsZ sh]# name="dun huang"
[root@iZwz9h901rvv69020rk7fsZ sh]# echo "$name"
dun huang
[root@iZwz9h901rvv69020rk7fsZ sh]# name="$name"' de tuo ling'
[root@iZwz9h901rvv69020rk7fsZ sh]# echo "$name"
dun huang de tuo ling
[root@iZwz9h901rvv69020rk7fsZ sh]#
3,操作:
变量调用 [root@localhost ~]# echo $name
变量查看 [root@localhost ~]# set
变量删除 [root@localhost ~]# unset name
2,环境变量
1,简介
用户自定义变量只在当前的Shell中生效, 而环境变量会在当前Shell和这个Shell的所 有子Shell当
中生效。如果把环境变量写入 相应的配置文件,那么这个环境变量就会 在所有的Shell中生效
2,设置
export 变量名=变量值 # 申明变量
env # 查询变量
unset 变量名 # 删除变量
注意:系统常见环境变量
1,$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
2,PS1
PS1:定义系统提示符的变量
\d:显示日期,格式为“星期 月 日”
\h:显示简写主机名。如默认主机名“localhost”
\t:显示24小时制时间,格式为“HH:MM:SS”
\T:显示12小时制时间,格式为“HH:MM:SS”
\A:显示24小时制时间,格式为“HH:MM”
\u:显示当前用户名
\w:显示当前所在目录的完整名称
\W:显示当前所在目录的最后一个目录
\#:执行的第几个命令
\$:提示符。如果是root用户会显示提示符为“#”,如果是普通用户 会显示提示符为“$
3,实例
[root@localhost ~]# PS1='[\u@\t \w]\$ '
[root@04:50:08 /usr/local/src]#PS1='[\u@\@ \h \# \W]\$‘
[root@04:53 上午 localhost 31 src]#PS1='[\u@\h \W]\$ '
3,位置参数变量
1,简介
$n n为数字,$0代表命令本身,$1-$9代表第一 到第九个参数,十以上的参数需要用大括号 包含,如${10}.
$* 这个变量代表命令行中所有的参数,$*把所 有的参数看成一个整体
$@ 这个变量也代表命令行中所有的参数,不过 $@把每个参数区分对待
$# 这个变量代表命令行中所有参数的个数
2,实例
#!/bin/bash
num1=$1
num2=$2 sum=$(( $num1 + $num2))
# 变量 sum 的和是 num1 加 num2
echo $sum
# 打印变量sum 的值
#!/bin/bash
echo "A total of $# parameters"
# 使用 $# 代表所有参数的个数
echo "The parameters is: $*"
# 使用 $* 代表所有的参数
echo "The parameters is: $@"
# 使用 $@ 也代表所有参数
#!/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
4,预定义变量
1,简介
$? 最后一次执行的命令的返回状态。如果这个变 量的值为0,证明上一个命令
正确执行;如果 这个变量的值为非0(具体是哪个数,由命令 自己来决定),则证明上一个命令执行不正确 了。
$$ 当前进程的进程号(PID)
$! 后台运行的最后一个进程的进程号(PID)
2,实例
#!/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 $!"
3,接受键盘输入