学习Linux心得笔记(17)-bash脚本编程之变量

作者: sxdgy 分类: linux 发布时间: 2017-06-28 11:45

1、静态编程语言和动态编程语言:

静态语言:事先转换成可执行格式,是编译型语言,变量是强类型,如:C、C++、JAVA、C#
动态语言:边解释边执行,是解释型语言,变量是弱类型,如:PHP、SHELL、python、perl

2、变量类型:

字符、数值(整型、浮点型、真、假)

3、逻辑运算:

与:&、或:|、非:!

4、变量分类:

本地变量:作用域对当前shell进程有效,对子shell无效。
[set] [OPTION] VARNAME=VALUE
局部变量:作用域为当前代码段。
local VARNAME=VALUE
环境变量:作用域为当前shell进程及其子进程;
export [OPTION] VARNAME=VALUE
位置变量:用来引用脚本的参数。
$1, $2, ... 用于引用前n个命令的执行状态的返回值。
    返回值分:1.执行的返回值。2.状态的返回值(0-255:0为成功;1-255为失败,其中1、2、127被系统保留)
特殊变量:
$? 上一个命令的执行状态返回值;

5、bash支持的引号

'' 单引号,强引用,引号中的内容原封不动输出。
"" 双引号,弱引用,引号中的变量要进行变量替换。
`` 反引号,实现命令替换,如:$(COMMAND) = `COMMAND`

6、变量操作命令

声明变量:declare [OPTION] VARNAME
变量赋值:VARNAME=VALUE
变量引用:${VARNAME} (花括号可以省略,只有在引用的时候才带上$)
撤消变量:unset VARNAME
查看当前shell中变量:set
查看当前shell中的环境变量:printenv、env、export

7、脚本格式

#!/bin/bash (第一行是shebang,指明了执行这个脚本文件的解释程序)
# 注释行,不执行

脚本在执行时会启动一个子shell进程;

命令行中启动的脚本会继承当前shell环境变量;

系统自动执行的脚本(非命令行启动)就需要自我定义需要各环境变量;

8、相关练习:

添加用户user1密码user1,要求添加密码完成后不显示passwd命令的执行结果信息;添加完成后,显示已成功添加;

useradd user1
echo "user1" | passwd --stdin user1 &> /dev/null
echo "Add user1 successfully."