shell脚本编程
注意 本人的博客都迁移到本人自己搭建的博客地址,通过此处可查看。
构建基本脚本
注释格式
#!/bin/sh
# FILENAME: test_shell
# AUTHOR: Javy
# Email: xujavy@gmail.com
# PURPOSE: Demonstration of comment style
# HISTORY: 1 May, 2018 Created
# 5 May, 2018 Modified to show mods
显示消息
echo This is a test
说明:
- -n:输出在同一行
使用变量
1. 环境变量
- set 显示所有的当前环境变量列表
例如:
#!bin/bash
# display user information from the system.
echo "User info for userid: $USER"
echo UID: $UID
echo HOME: $HOME
2. 用户变量
3. 命令替换
-
反引号字符( `)
-
$()格式
#!bin/bash
testing=$(date)
重定向输入和输出
1. 输出重定向
command > outputfile
2. 输入重定向
command < outputfile
管道
执行数学运算
1. expr命令
expr 1 + 5
2. 使用方括号
$[ operation ]
3. 浮点解决方案
- bc的基本用法
bc -q
quit
2. 在脚本中使用bc
variable=$(echo "options; expression" | bc)
说明:
options:设置变量,允许多个变量可以用分号隔开。
expression:定义bc执行的数学表达式。
variable=$(bc << EOF options statements expression EOF )
退出脚本
1. 查看退出状态码
$?
可查看退出状态
说明:
状态码 | 描述 |
---|---|
0 | 命令成功结束 |
1 | 一般性未知错误 |
2 | 不适合的shell执行命令 |
126 | 命令不可执行 |
127 | 没找到命令 |
128 | 无效的退出参数 |
128+x | 与Linux信息x相关的严重错误 |
130 | 通过Ctrl+C终止的命令 |
255 | 正常范围之外的退出状态码 |
2. exit命令
可以指定退出码exit num
,num表示0~255之间的数,如果大于将以取模的形式返回。
使用结构化命令
使用if-then语句
格式:
if command then
commands
fi
说明:
if后面的command是一个命令,如果命令退出代码是0,then部分就会被允许,如果是其他码then部分不会被执行。
使用if-then-else语句
格式:
if command then
commands
else
commands
fi
嵌套if
test命令
test condition
if test condition then
commands
fi
也可以写为:
if [ condition ] then
commands
fi
test命令可以判断的三类条件:
-
数值比较
-
字符串比较
-
文件比较
1. 数值比较
比较 | 描述 | 比较命令说明 |
---|---|---|
n1 -eq n2 | n |