linux Bash shell脚本学习笔记
一:前言
Bash是一个用于GNU操作系统的shell(命令行解释器),与sh的区别是,bash整体上兼容sh,sh是目前unix的命令行解释器。网上所说的linux shell脚本,基本上就是指bash shell.
本文主要介绍bash的基本使用 。
二:bash变量
1.变量定义
直接赋值,需要注意一点是赋值时,等号前后不能有空格
val="hello"
2.变量引用
#方式一
echo $var
#方式二
echo ${var}
三:循环结构
1.util
until 测试命令; do 命令块; done
2.while
while 测试命令; do 命令快; done
3.for
for 变量[in 单词]; do 命令块; done
for((i=1;i++;i<5));do 命令块; done
4.退出循环(break continue)
break
continue
四:条件结构
1.if
if 条件一;then
命令块一
[elif 条件二;then
命令块二
]
...
[else
命令块N
]
fi
2.case
case 单词 in
(值1|值2|值3...|值n) 命令1;;
(值1|值2|值3...|值n) 命令1;;
...
(值1|值2|值3...|值n) 命令1;;
esac
五:bash的表达式
1.算数表达式
bash 的支持的算数表达式如下,在使用时时需要用**(())来括起来,如((i++))**
2.条件表达式
bash 的支持的条件表达式如下,在使用时时需要用**[[]]来括起来,如[[ -a hello.txt ]]**
中括号内两边都必须加空格,不然会报错
-d 文件 如果文件存在并且是个目录则为真。
-e 文件 如果文件存在则为真。
-f 文件 如果文件存在并且是个常规文件则为真。
-g 文件 如果文件存在并且设置了有效组号则为真。
-h 文件 如果文件存在并且是个符号链接则为真。
-k 文件 如果文件存在并且设置了奜滞留位夢则为真。
-p 文件 如果文件存在并且是个命名管道 夨奆奉奆奏天 则为真。
-r 文件 如果文件存在并且可读则为真。
-s 文件 如果文件存在并且其大小不为零则为真。
-t 文件描述符 如果文件描述符已打开并且指向终端则为真。
-u 文件 如果文件存在并且设置了有效用户号则为真。
-w 文件 如果文件存在并且可写则为真。
-x 文件 如果文件存在并且可执行则为真。
-O 文件 如果文件存在并且被其有效用户号所拥有则为真。
-G 文件 如果文件存在并且被其有效组号所拥有则为真。
-L 文件 如果文件存在并且是个符号链接则为真。
-S 文件 如果文件存在并且是个套接字文件则为真。
-N 文件 如果文件存在并且大上次读取过后被修改过则为真。 文件一 -nt 文件二 如果文件一比文件二新 夨根据修改时间天或者文件一存在而文件二不存在则为真。 文件一 -ot 文件二 如果文件一比文件二旧 夨根据修改时间天或者文件二存在而文件一不存在则为真。 文件一 -ef 文件二 如果文件一和文件二指向同样的设备或文件节点则为真。
-z 字符串 如果字符串的长度是零则为真
-n 字符串 如果字符串的长度不是零则为真。
字符串一 == 字符串二 如果字符串一与字符串二相等则为真。可以把 == 换成 = 以保证与 奐奏奓奉奘 一 致。
字符串一 != 字符串二 如果字符串一与字符串二不相等则为真
字符串一 < 字符串二 在当前语言区域中排序时,如果字符串一排在字符串二前面则为真。
字符串一 > 字符串二 在当前语言区域中排序时,如果字符串一排在字符串二后面则为真。
数值一 运算符 数值二 运算符是-eq、-ne、-lt、-le、-gt、-ge之一。在这些算术双目运 算中,如果数值一分别为等于、不等于、小于、小于或等于、大于、大于或等于数值二则为真。数值 一和数值二可以是正或负整数。
六:重对向
bash 重对向有输入重对向和输出重对向,这里详细讲输出重对象。
所谓输出重对向,就是把在命令行输入命令(command)执行后,产生的输出或错误信息从原本输出到命令行窗口上重定向输出到指定文件里。
1.以追加方式输出
#以追加方式将“hello world”输出文件hello.txt
echo "hello world">>hello.txt
2.以覆盖方式输出
#以覆盖方式将“hello world”输出文件hello.txt
echo "hello world">hello.txt
3.重定向输出模式
七:几个常用命令
1.cat
读取hello.txt全部内容呢并输出
cat hello.txt
2.输出指定行数的内容
#读取前十行
cat hello.txt|head -n 10
#读取后十行
cat hello.txt|tail -n 10
五函数
1.函数定义语法
[function] 名称() 符合命令块 [重定向]
2.例子
func(){
echo "hello world"
}
func