Shell基础-Bash变量

Shell基础-Bash变量

变量设置规则
1)名称
     可由字母,数字和下划线组成,不能以数字开头
2)在Bash中,变量的默认类型都是字符串型。如果要进行数值运算,则必须指定变量为数值型。
3)变量用等号连结值,等号左右两侧不能有空格。
4)变量的值如果有空格,需要使用单引号或双引号。
5)在变量的值中,可以使用"\"转义符。
6)进行变量的叠加需要用双引号"$变量名"或用${变量名}。
7)把命令结果作为变量值赋予变量,需要反引号或用$(); name=$(date)
8)环境变量名建议大写,便于区分

变量分类
用户自定义变量:本地变量,只在当前的Shell中生效
本地变量
变量定义:a=1
变量调用:echo $a
变量叠加: a="a"22
变量查看(所有):set
变量删除:unset a
环境变量:它主要保存的是和系统操作环境相关的数据,会在当前的Shell和这个Shell的所有子Shell当中生效。如果写入配置文件中,那么它会在一系列Shell中生效。
变量定义:export 变量名=变量值
变量调用:echo $a
变量查询:env
变量删除:unset 变量名
系统常见环境变量
PATH:系统查找命令的路径,写在这里的路径,不需要写路径,就可以执行。
            也可以用变量叠加的方式临时把写的脚本加入PATH中,PATH="$PATH":/root/sh
PS1:定义系统提示符的变量。例如:[[email protected]~]# 就是 [\[email protected]\h \w]\$ 。
位置参数变量:它主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的,只能改变值。
位置参数变量            作用
     $n                n为数字,$0代表命令本身,$1-$9代表第1到第9参数,10以上参数要用大括号,${11}。
     $*                 代表命令行中所有的参数,把所有参数当成一个整体。
     [email protected]               也代表命令行中所有的参数,不过它把每个参数区分了,每个参数是独立的个体。
     $#                命令行中所有参数的个数
$n的应用:
写一个脚本hh
#!/bin/bash
num1=$1
num2=$2
sum=$(($num1+$num2))
echo "sum is : $sum"
执行脚本./hh  1  2
sum is : 3
预定义变量:是Bash中已经定义好的,变量名不能自定义,其作用也是固定的,只能改值。
预定义变量                 作用
    $?            判断前一命令是否正确,若正确,返回0;若不正确,返回非0;
    $$             当前进程的进程号(PID)
    $!             后台运行的最后一个进程的进程号。
接受键盘输入
read [选项] [变量名]
选项:
-p   “提示信息”: 输出提示信息
-t 秒数:        等待用户输入时间
-n 字符数:    接收到指定字符数,就会执行
-s :        隐藏输入数据
例子:read -n 1 -t 30 -p "please select your gender[M/F]:" gender

数值运算
在Linux中变量默认是字符串。所以$a=1\n $b=2\n $c=$a+$b\n echo的$c是1+2;
所以要进行数值运算,可以采用以下方法;
 一、declare 声明变量类型
declare [+/-][选项] 变量名
选项:
-:  给变量设定类型属性
+: 取消变量类型属性
i:  将变量声明为整数型
x:   将变量声明为环境变量
p: 显示变量类型
例子:$a=1\n $b=2\n declare -i $c=$a+$b\n echo的$c是3;
二、expr 或 let 数值运算工具
d=$(expr $a + $b)\n echo的$d是3;
三、 $((运算式)) 或 $[运算式]
f=$(($a+$b))
g=$[$a+$b]


变量测试
多用于写脚本时,不过还是用if代替。
Shell基础-Bash变量