24 shell变量(自定义变量、环境变量、位置参数变量、预定义变量)

来源:互联网 发布:标签权重算法 编辑:程序博客网 时间:2024/05/16 07:39

【注】:set查看系统当中所有变量(包括系统中环境变量,系统变量,自定义变量)


1、自定义变量(字母数字下划线,不能以数字开头),只在当前shell生效,子shell或者其他shell都不生效:

赋值 :a=123;    //123

     a="$a"456; //叠加,123456

     a="${a}"789;//也可以这样叠加,123456789

调用: $a

删除:  unset  a   


2、 环境变量,子shell也生效 :

2.1 pstree:查看子父级shell结构

2.2 设置环境变量

2.2.1 方法一: export  age=18 或者(age=18;export age)             //临时的,重启就不在了

2.2.2 方法二  :  PATH = "${PATH}"age=18;              //临时的,重启就不在了

2.2.3 方法三:

2.3 只查看系统环境变量:env

2.4 清空变量 unset  age

2.5 PATH :PATH="${PATH}:/home/lvxiujun"               //临时生效,重启不生效,以后要写到配置文件中

2.6  PS1 :$PS1,显示登陆后左侧显示的

\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

临时修改到内存:PS1="[\u@\t \w]\$"


3、位置参数变量

$n:n为数字,$0代表命令本身,1-9代表第一个到第九个参数,10以上的参数需要用大括号包含,如${10}

$#:这个变量代表命令行中所有参数的个数

$*:代表所有参数,将所有参数当作一个整体

$@:这个变量也代表所有参数,但是它会把所有参数区分对待

【$*与$@区别】:在循环$*与$@时候,如果参数有4个,$*会认为这4个是一个数只会循环一次,而$@会循环四次

例如:

  #!/bin/bash
 
  e
cho $0            //输出命令本身

echo $1 //第一个参数

echo $2 //第二个参数


4、预定义变量

$?:最后一次命令执行的状态,如果$?是0说明最后一次执行命令正确,非0不正确    //echo $?

$$:当前进程的进程号(pid)//echo $$

$!:后台运行的最后一个进程的进程号(pid)  ,linux在输入命令之后跟上“ &” ,就是放到后台执行 //echo $!


5、read接受命令行输入的参数

read  选项   变量名

-p  "提示信息":在等待read输入时,输出的提示信息

-t :read会一直等待用户输入信息,-t 指定等待时间,到了等待时间就不等待了

-n:字符数,read命令只接受指定的字符数就会执行

-s : 隐藏输入的数据,适用于密码等加密信息

例如:

#!/bin/bash

   
  read -t 30 -p "请输入你的名字 name:" name
  echo "name:$name"








阅读全文
0 0
原创粉丝点击