rwwh

LinuxShell的变量

一 定义变量的规范

    ①变量名称可以由字母,数字和下划线组成,但是不能以数字开头

    ②在Bash中,变量的默认类型都是字符串类型,如果要进行数值运算,则必须指定变量类型为数值型

    ③变量用等号连接值,等号左右两侧不能有空格

     ④变量的值如果有空格,需要使用单引号或双引号包括

     ⑤若需要增加变量的值,那么可以进行变量值的叠加.不过变量需要使用双引号包含"$变量名"或用${变量名}包含变量名,如下所示:

          变量值的叠加可以使用两种格式:"$变量名"或${变量名}

[root@Linux01 ~]# test=123
[root@Linux01 ~]# test="$test"456
[root@Linux01 ~]# echo $test
123456
[root@Linux01 ~]# test=${test}789
[root@Linux01 ~]# echo $test
123456789

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

[root@Linux01 ~]# test=$(date)
[root@Linux01 ~]# echo $test
Wed Dec 25 20:52:29 CST 2019

二 变量的分类

①用户自定义变量:由用户自定义变量名和变量的值.

set [选项]
选项:
    -u 若设定此选项,调用未声明变量时会报错(默认无任何提示)
    -x 若设定此选项,在命令执行之前,会把命令先输出一次

#直接使用set命令,会查询系统中所有的变量,包含用户自定义和环境变量
#当设置了-u选项后调用未声明变量时会报错(默认无任何提示)
[root@Linux01 ~]# set -u
[root@Linux01 ~]# echo $file
bash: file: unbound variable
[root@Linux01 ~]# echo $file
#当设定了-x选项,命令执行之前,会把命令先输出一次
[root@Linux01 ~]# set -x
[root@Linux01 ~]# ls
+ ls --color=auto
anaconda-ks.cfg  Documents  install.log         Music     Public     test.txt
Desktop          Downloads  install.log.syslog  Pictures  Templates  Videos
[root@Linux01 ~]# pwd
+ pwd
/root
变量查看
unset 变量名
变量删除

②环境变量:这种变量主要保存的是和系统操作环境的相关数据.

#设置环境变量
[root@Linux01 ~]# export age="18"
#查看环境变量,env与set的区别是:set查看所有变量,env只能查看环境变量
[root@Linux01 ~]# env|grep age
age=18
#删除环境变量
[root@Linux01 ~]# unset age
环境变量的查看,设置及删除

系统默认环境变量

 

 

 

 env命令可以查询到所有的环境变量,但是一些和Bash操作接口相关的变量,只能用set命令查看

 PATH变量:系统查找命令的路径

 

 PS1变量:命令提示符设置

  PS1是用来定义命令行的提示符,PS1可以支持以下选项:

 

 

③位置参数变量:这种变量主要是用来向脚本当中传递参数或数据的,变量名不能自定义,变量作用是固定的

 

 

④预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用是固定的

 

 

 

 

 

#!/bin/bash

#输出当前进程的pid
#这个pid就是variable.sh这个脚本执行时,生成进程的PID
echo "The current process is $$"

#使用find命令在root目录下查找hello.sh文件
#使用&的意思是命令放入后台执行
find /root -name hello.sh &
#输出这个后台执行命令的进程PID,也就是输出find命令的PID
echo "The last one Daeomn process is $
$$ 和$!示例

 

⑦ 键盘输入

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

变量名:
   变量名可以自定义,如果不指定变量名,会把输入保存入默认变量REPLY
   如果只提供一个变量名,则整个输入行赋予该变量
   如果提供一个以上的变量名,则输入行分为若干字,一个接一个地赋予各个变量,而命令行上的最后一个变量取得剩余的所有字

 

#!/bin/bash

#提示输入名字,并等待30秒,把用户输入的保存到变量name中
read -t 30 -p "Please input your name:" name
echo "Name is $name"

#提示"请输入年龄",并等待30秒,把用户的输入保存变量age中
#年龄是隐私,所以用-s选项隐藏输入

read -s -t 30 -p "Please input your age:" age
#调准输出格式,若不输出换行;年龄的输出不会换行,-e可以激活转义符
echo -e "\n"
echo "Age is $age"

#提示"请选择性别",并等待30秒,把用户的输入保存到变量gender
read -n 1 -t 30 -p "Please select your gender[M/F]:" gender
echo -e "\n"

echo "Sex is $gender"
示例

 

分类:

技术点:

相关文章:

猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-12
  • 2022-12-23
  • 2021-06-17
  • 2021-10-22
相关资源
相似解决方案