还不是为了工作嘛软件开发程序员

Bash脚本编程(2)——编程入门

2016-03-28  本文已影响872人  逃跑中计划

@(Bash)[编程入门]


1. Bash中的变量

1.1 变量类型

语言类型:

1.2 变量的种类

(1)本地变量
生效范围为当前shell进程;对当前shell之外的其它shell进程,包括当前shell的子shell进程均无效;
(2)环境变量
生效范围为当前shell进程及其子进程;
(3)局部变量
生效范围为当前shell进程中某代码片断(通常指函数);
(4)位置变量
$1, $2, ...来表示,用于让脚本在脚本代码中调用通过命令行传递给它的参数;
(5)特殊变量
$?, $0, $*, $@, $#

1.3 本地变量

变量赋值:name='value'
(1) 可以是直接字串:name="username"
(2) 变量引用:name="$username"
(3) 命令引用:name=COMMAND, name=$(COMMAND)

变量引用:
${name}, $name

引用分类:
""弱引用,其中的变量引用会被替换为变量值;
''强引用,其中的变量引用不会被替换为变量值,而保持原字符串;

显示已定义的所有变量:
set

销毁变量:
unset name

1.4 环境变量

变量声明、赋值:
export name=VALUE
declare -x name=VALUE

只读变量:
readonly name
declare -r name

变量引用:
$name, ${name}

显示所有环境变量:
export
env
printenv

销毁:
unset name

变量命名法则:
(1) 不能使程序中的保留字:例如if, for
(2) 只能使用数字、字母及下划线,且不能以数字开头
(3) 见名知义

1.5 位置变量

在脚本代码中调用通过命令行传递给脚本的参数
$1, $2, ...:对应调用第1、第2等参数
$0: 命令本身

shift [n]
用来偏移未知变量的一个命令

1.6 特殊变量

2. Bash的配置文件

2.1 按生效范围划分

全局配置:
/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
个人配置:
~/.bash_profile
~/.bashrc

2.2 按功能划分

profile类:为交互式登录的shell提供配置

bashrc类:为非交互式登录的shell提供配置

2.3 生效次序

交互式登录(shell登录)

非交互式登录(shell登录)

3. Bash中的运算

3.1 基本算数运算

算术符号:

实现算术运算:
(1) let var=算术表达式
(2) var=$[算术表达式]
(3) var=$((算术表达式))
(4) var=$(expr arg1 arg2 arg3 ...)

乘法符号有些场景中需要转义
Bash有内建的随机数生成器:$RANDOM

3.2 增强型赋值

算术符号:

实现算术运算:
let varOPERvalue
例如:let count+=1

3.3 自增、自减

自增:
let var+=1
let var++

自减:
let var-=1
let var--

4. 条件测试

4.1 测试命令

test EXPRESSION
[ EXPRESSION ]
[[ EXPRESSION ]]

Note: EXPRESSION前后必须有空白字符

4.2 数值测试

4.3 字符串测试

Note:用于字符串比较时的用到的操作数都应该使用引号

4.4 文件测试

4.4.1 存在性测试

4.4.2 存在性及类别测试

4.4.3 文件权限测试

4.4.4 文件特殊权限测试

4.4.5 文件大小测试

4.4.6 文件是否打开

4.4.7 双目测试

4.5 组合测试条件

第一种方式:
COMMAND1 && COMMAND2
COMMAND1 || COMMAND2
! COMMAND

举例:
1、[ -e FILE ] && [ -r FILE ]

第二种方式:
EXPRESSION1 -a EXPRESSION2
EXPRESSION1 -o EXPRESSION2
! EXPRESSION

举例:
1、[ -z "$hostName" -o "$hostName"=="localhost.localdomain" ] && hostname www.magedu.com
2、[ -f /bin/cat -a -x /bin/cat ] && cat /etc/fstab

必须使用测试命令进行


5. 思维导图

编程入门
上一篇下一篇

猜你喜欢

热点阅读