shell编程之变量

Posted 架构师小跟班

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程之变量相关的知识,希望对你有一定的参考价值。

变量设置规则

1、变量名称可以由字母、数字和下划线组成,但不能以数字开头;
2、在Bash中,变量的默认类型是字符串,如果要进行数值运算,则必须指定变量类型为数值型;
3、变量用等号连接值,等号左右两侧不能有空格;
4、变量的值如果有空格,需要使用单引号或双引号包括;
5、在变量的值中,可以使用“\\”转义符;
6、如果需要增加变量的值,那么可以进行变量值的叠加,不过变量需要使用双引号包含“$变量名”或用${变量名}包含;

7、如果把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令;

8、环境变量名建议大写,便于区分。

变量分类

1、用户自定义变量
2、环境变量
3、位置参数变量:用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的
4、预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用是固定的

set 查看系统中所有的变量
echo $name 调用变量
unset name 删除变量,不带$

执行set命令后,可看到PATH环境变量,即系统查找命令的路径

环境变量

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

设置环境变量
export 变量名=变量值 申明环境变量,声明后子shell就可以使用该变量
env 查询变量
unset 变量名 删除变量

位置参数变量

计算两个数之和的shell脚本:
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))
echo $sum

 

[root@192 test]# cat canshu2.sh 

#!/bin/bash
for i in "$*"
do
echo "The parameters is:$i"
done

x=1
for j in "$@"
do
echo "The parameters is:$j"
x=$(($x+1))
done

[root@192 test]# ./canshu2.sh 1 2 3 4 5 6
The parameters is:1 2 3 4 5 6
The parameters is:1
The parameters is:2
The parameters is:3
The parameters is:4
The parameters is:5
The parameters is:6

预定义变量

$$ 当前脚本执行时,生成的进程的PID

$!
[root@192 test]# echo $?
0
[root@192 test]# sdfadsf
-bash: sdfadsf: command not found
[root@192 test]# echo $?
127

接收键盘输入

read [选项] [变量名]

  -p 提示信息:在等待read输入时,输出提示信息
  -t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
  -n 字符数:read命令只接受指定的字符数,就会执行,不用回车
  -s :隐藏输入的数据,保密
[root@192 test]# cat read.sh
#!/bin/bash
read -t 30 -p "Please input your name:" name
#提示输入姓名,等待30秒,将用户输入的值赋值给变量name
echo "Input name is $name"
read -s -t 30 -p "Please enter your age:" age
#年龄是隐私,所以用-s选项隐藏输入
echo "Enter age is $age"
echo -e "\\n"
read -n 1 -t 30 -p "Please select your gender[M/F]:" gender
#选择性别,接收一个字符后就执行,不用回车
echo -e "\\n"
echo "Sex is $gender"

 

以上是关于shell编程之变量的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程之变量

linux之shell编程

shell编程

shell编程之常用系统变量自定义变量特殊变量运算符

shell编程之变量定义

shell编程之变量定义