变量:用户自定义变量(本地变量),环境变量,位置参数变量,预定义变量
用户自定义变量(本地变量)
[root@localhost ~]# var1=中国 [root@localhost ~]# var2="$var1"欢迎你 注释:变量叠加方式一 [root@localhost ~]# echo $var2 中国欢迎你 [root@localhost ~]# var3=${var1}欢迎你 注释:变量叠加方式二 [root@localhost ~]# echo $var3 中国欢迎你
[root@localhost ~]# echo $var1 中国 [root@localhost ~]# unset var1 注释:取消变量。set可查看系统中所有已定义的变量 [root@localhost ~]# echo $var1 [root@localhost ~]#
环境变量:
查看环境变量:env
查看进程树:pstree
申请变量为全局变量(环境变量):export 变量名
[root@localhost ~]# set|grep PS1 PS1='[\u@\h \W]\$ ' [root@localhost ~]# echo $PS1 [\u@\h \W]\$ [root@localhost ~]# PS1='[\u@\h \w@\t]\$' [root@localhost ~@20:24:41]#
PS1各项含义:
\u:当前用户名
\h:主机名
\W:显示当前所在目录最后一个目录名
\w:显示当前所有目录完整路径
\$:提示符,root为#,普通用户为$
\d:显示日期,格式“星期 月 日"
\t:24小时制时间,"HH:MM:SS"
\T:12小时制时间,"HH:MM:SS"
\A:24小时制时间,"HH:MM"
\#:执行的第几个命令
位置参数变量
$n n为数字,0代表命令本身,1-9代表第1到9个参数,10以上参数用大括号,如${10}
$* 代表所有参数,把所有参数看成一个整体
$@ 代表所有参数,把每个参数区分
$# 代表所有参数个数
[root@localhost shFiles]# vim param.sh #!/bin/bash echo $0 echo $1 echo $2 echo $3 echo $* echo $@ echo $#
[root@localhost shFiles]# ./param.sh a b c d ./param.sh a b c a b c d a b c d 4
$*与$@区别:
[root@localhost shFiles]# vim starXat.sh #!/bin/bash for i in "$*" 注释:要加双引号,不然效果和$@一样。 do echo "The parameters is: $i" done for j in "$@" do echo "The parameters is: $j" done
[root@localhost shFiles]# ./starXat.sh a b c The parameters is: a b c The parameters is: a The parameters is: b The parameters is: c
预定义变量
$? 最后一次执行命令返回状态,0正确执行,非0未正确执行
$$ 当前进程号(PID)
$! 后台运行的最后一个进程号(PID)
[root@localhost shFiles]# echo $? 0 [root@localhost shFiles]# echo $$ 2312 [root@localhost shFiles]# ls& 注释:把进程放入后台执行 [1] 2643 [root@localhost shFiles]# hello.sh param.sh starXat.sh Tetris.sh [1]+ 完成 ls --color=auto [root@localhost shFiles]# echo $! 2643
read接收键盘输入:read [选项] [变量]
[root@localhost shFiles]# read -p "请输入:" 请输入:abc [root@localhost shFiles]# read -p "请输入:" -t 10 请输入:[root@localhost shFiles]# [root@localhost shFiles]# read -p "请输入:" -n 3 请输入:abc[root@localhost shFiles]# [root@localhost shFiles]# read -p "请输入:" -s 请输入:[root@localhost shFiles]#
[root@localhost shFiles]# echo "abc \n cde" abc \n cde [root@localhost shFiles]# echo -e "abc \n cde" 注释:输出换行时加-e选项的效果 abc cde