变量:用户自定义变量(本地变量),环境变量,位置参数变量,预定义变量

用户自定义变量(本地变量)

[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@	]$'
[root@localhost ~@20:24:41]#

PS1各项含义:

u:当前用户名

h:主机名

W:显示当前所在目录最后一个目录名

w:显示当前所有目录完整路径

$:提示符,root为#,普通用户为$

d:显示日期,格式“星期 月 日"

: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 
 cde"
abc 
 cde
[root@localhost shFiles]# echo -e "abc 
 cde"  注释:输出换行时加-e选项的效果
abc 
 cde
原文地址:https://www.cnblogs.com/xiongjiawei/p/7301683.html