bash编程之变量、变量类型
变量:一段命名的内存空间
变量类型:事先确定数据的存储格式和长度(整型、浮点型、真假型)
强:变量在使用前,必须事先声明,甚至还需要初始化;
弱:变量用时声明,甚至不区分类型;
变量赋值:VAR_NAME=VALUE
bash变量类型:
环境变量
本地变量(局部变量)
位置变量
特殊变量(系统内置的变量、用于存储特殊的数据)
引用变量:${VAR_NAME},括号可以省略,是否省略主要看其引用的变量名称是否容易引起混淆
不同的shell的是不同的进程
本地变量:
set (可省略)VARNAME=VALUE: 作用域为整个bash进程;
局部变量:
local VARNAME=VALUE:作用域为当前代码段;
环境变量:作用域为当前shell进程及其子进程;(只对当前shell以及其子shell有效)
1.export VARNAME=VALUE
2.VARNAME=VALUE
export (导出) VARNAME
位置变量:$1, $2, ...
特殊变量:
$?: 上一个命令的执行状态返回值;
程序执行,可能有两类返回值:
程序执行结果
程序状态返回代码(0-255)
0:正确执行
1-255:错误执行,1,2,127系统预留;
注:表示不存在学生这个用户
撤消变量:unset VARNAME
查看当shell中变量:set
查看当前shell中的环境变量:printenv或者printexport
脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序
每一个shell脚本的最前面一句#!/bin/bash(shebang: 魔数)
# :表示注释行,不执行
给脚本添加执行权限(linux只能识别ELF格式的文件,然而脚本是ASSIC格式的文件)
给脚本文件指定执行路径(./frist.sh为当前路径)
去权限执行脚本:(bash frist.sh)直接用bash解释器,但是在必须单独执行的时候必须给与脚本文件执行的权限
/dev/null: 软件设备, bit bucket,数据黑洞 (表示输入到里面的数据不会被显示出来)
在shell变量中加入新的值:引用其前面的值即可
注:脚本在执行时会启动一个子shell进程;
命令行中启动的脚本会继承当前shell环境变量;
系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;
Shell默认是字符串,不做算术运算;比如:
写一个脚本,完成以下任务
1、添加2个用户, user1,user2
2、每个用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果信息;
3、每个用户添加完成后,都要显示用户某某已经成功添加;
写一个脚本,完成下面的任务。