24 shell变量(自定义变量、环境变量、位置参数变量、预定义变量)
日期: 2017-06-26 分类: 个人收藏 321次阅读
【注】: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
echo $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"
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
上一篇: 新人上手TensorFlow 之前前后后
下一篇: 网站被CC攻击!2个方法教你如何做好防护
精华推荐