shell变量
一.shell介绍
shell是一个命令解释器,它位于用户和内核之间,将用户输入的指令解释给内核执行;/bin/bash和/bin/sh是最常用的解释器
二.变量的命令规则
1.只能包含数字,字母,下划线
2.数字不能开头
3.区分大小写
三.变量的定义
第一种方式
变量名=变量值,注意等号等号=两边不能有空格,否则shell会将变量名当初命令执行而报"command not found"的错误
[root@localhost mysql]# name=xiaoming [root@localhost mysql]# echo $name xiaoming
[root@localhost mysql]# name = hehe -bash: name: command not found
第二种方式
通过read交互让用户输入并付赋值给一个变量名
read命令的常用选项:
-p "提示信息" 提示信息,可以用来提示用户需要输入什么信息
-s 隐藏用户的输入内容,比如输入密码时可以隐藏
-t n n秒后会自动回车,所以用户需要在n秒内输入完成
-n num 用户最多可以输入num个字符
第三种方式
变量名=$(命令)或变量名=`命令`,将命令的执行结果赋值给变量
四.变量的类型
局部变量:只在当前终端有效,就是直接在命令行上定义
环境变量:export 变量名=变量值;只在当前进程及其子进程有效
全局环境变量:在/etc/profile配置文件中最后加上export 变量名=变量值,保存后退出,使用source /etc/profile使配置有效
系统变量:
$0 当前的进程名
$1,$2.. 传给脚本的参数顺序
$$ 当前的进程ID
$!当前系统运行的最后一个进程的进程ID号
$? 上一条命令的运行结果,0表示执行成功,非0表示执行失败
$# 参数的个数
$@/$* 所有的参数值
$*是以"$1 $2 … $n"的形式输出所有参数
$@是以"$1" "$2" … "$n" 的形式输出所有参数
系统变量可以在shell脚本中直接使用
五.变量的取消
unset 变量名