#################
Bash变量
变量命名规则:
必须以字母下划线开头;
变量不能数字开头;
长度不能超过255个字符;(其实可以识别超过255个字符的,但是255以内足够用)
变量名在有效范围内必须唯一;
变量的默认类型都是字符串型;
#################
用户自定义变量:变量自定义的
环境变量:主要保存的是和系统操作环境相关的数据。变量可以自定义,但对系统生效的环境变量名和变量作用是固定的。
预定义变量:已经定义好的变量,变量名不能自定义,变量作用也是固定的。
#################
变量名=变量值
echo $变量名
[root@localhost Desktop]# echo $x
5
[root@localhost Desktop]# y = 7 ##不能有空格
bash: y: command not found...
[root@localhost Desktop]# z=$x+$y ##不认识‘+’运算
[root@localhost Desktop]# echo $z
5+7
#################
环境变量
export 变量名=变量值
PATH:系统查找命令的路径
#################
脚本执行:
[root@localhost Desktop]# vim hello.sh ##编写简单脚本
#!/bin/bash
echo "Today is Monday."
[root@localhost Desktop]# chmod +x hello.sh ##给予脚本执行权限
[root@localhost Desktop]# /root/Desktop/hello.sh ##绝对路径执行脚本
Today is Monday.
[root@localhost Desktop]# ./hello.sh ##相对路径
Today is Monday.
[root@localhost Desktop]# echo $PATH ##查看PATH环境变量
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
[root@localhost Desktop]# cp hello.sh /usr/bin/ ##拷贝到/usr/bin/下
[root@localhost Desktop]# hello.sh ##执行文件(就如同ls命令一样执行)
Today is Monday.
[root@localhost Desktop]# rm -fr /usr/bin/hello.sh ##删除刚刚拷贝到/usr/bin/的文件
[root@localhost Desktop]# PATH="$PATH":/root/Desktop ##添加当前路径到PATH环境变量中
[root@localhost Desktop]# echo $PATH ##此种方法只是临时有效
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/root/bin:/root/Desktop
[root@localhost Desktop]# hello.sh
Today is Monday.
#################
PS1变量:命令提示符设置
- \d:显示日期,格式为“星期 月 日”
- \H:显示完整主机名
- \t:显示24小时制时间,格式为“HH:MM:SS”
- \A:显示24小时制时间,格式为“HH:MM”
- \u:显示当前用户名
- \w:显示当前所在目录的完整名称
- \W:显示当前所在目录的最后一个目录
- \$:提示符。如果是root用户会显示提示符为“#”,如果为普通用户会显示提示符为“$”
[root@localhost Desktop]# echo $PS1
[\u@\h \W]\$
[root@localhost Desktop]# PS1='[\u@\A \w]\$'
[root@21:25 ~/Desktop]# PS1='[\u@\h \W]\$'
#################
位置参数变量:
$* ##把整体当成一个,返回所有 $@ ##返回所有参数(把每个参数分开对待)
$# ##返回参数个数
$n ##返回第n个参数
#!/bin/bash
for i in "$*"
do
echo $i
done
for j in "$@"
do
echo $j
done
[root@localhost Desktop]#vim liu.sh
[root@localhost Desktop]#chmod +x liu.sh
[root@localhost Desktop]#./liu.sh 1 2 3 4 5 6
1 2 3 4 5 6
1
2
3
4
5
6
#################
预定义变量:
$? ##最后一次执行状态的返回状态。若这个变量的值为0,说明上一个命令正确执行;若这个变量参 ##数非0,证明上一个命令错误。
$$ ##当前进程的进程号(pid)
$! ##后台运行的最后一个进程的进程号
[root@localhost Desktop]#ls && echo yes ||echo no
yes
[root@localhost Desktop]#ls && echo $?
0
read [选项][变量名]
-p "提示信息":等待read 输入时,输出提示信息
-t 秒数:read 命令会一直等待用户输入,可以指定等待时间
-n 字符数:read命令只接受指定的字符数,就会执行
-s :隐藏输入的数据,适合用于机密信息的输入
[root@localhost Desktop]#cat liu.sh
#!/bin/bash
read -p "Please input your name:" name
read -p "Please set your password:" -s pass
echo -e "\r"
read -p "Please input your sex{M/W}:" -n 1 sex
echo -e "\r"
[root@localhost Desktop]#vim liu.sh
[root@localhost Desktop]#chmod +x liu.sh
[root@localhost Desktop]#vim liu.sh
[root@localhost Desktop]#./liu.sh
Please input your name:liu
Please set your password:
Please input your sex{M/W}:M
#################