Bash 编程语法
变量
-
规则
-
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
-
中间不能有空格,可以使用下划线(__)
-
不能使用标点符号
-
不能使用 bash 里的关键字(可用 help命令查看保留关键字)
-
定义与使用变量
-
定义变量:your_name=“abc”
-
调用变量:echo $your_name
-
只读变量
-
定义变量:a=“123”
-
不能被更改和删除:readonly a
-
删除变量
-
删除变量:unset variable_name
-
不能删除只读变量
-
变量类型
-
变量仅在当前窗口生效
-
字符串:your_name=“hogwarts”
-
拼接字符串:greeting=“hello,”$your_name"!"
-
数组:array_name=(value0 value1 value2)
-
取数组:valuen=${array_name[n]}
-
单独赋值:array_name[0]=value0
-
实战
# 使用变量 与删除变量
a="dds"
b=10
readonly b
echo $a #结果是 dds
echo $b #结果是 10
unset a #成功删除
unset b # 删除失败
# 数组初始化
my_array=(A B "C" D)
echo "第一个元素为:${my_array[0]}"
# 结果是:第一个数组是:A
# 数组单个定义
my_array[1]=B
my_array[2]=ss
echo "数组的元素为:${my_array[*]}"
# 结果是:数组的元素为:B ss
echo "数组的元素为:${my_array[@]}"
# 结果是:数组的元素为:B ss
控制语句
条件分支:if
-
if 定义
-
if condition
-
then
-
command1
-
command2
-
…
-
commandN
-
fi
if [2==2]; then echo "true";else echo"false";fi
if [[2>1]]; then echo "true";else echo "false";fi
-
用大于小于时,需要用双[],判断等于时用
-
内外与关键字前后都要有空格
-
-eq:是否相等
-
-lt:小于
-
-gt:大于
-
实战
# 比较两个变量的大小并输入不同的值
if [ $a -eq $b ]; then echo "equal"; elif [ $a -lt $b ]; then echo "small"; elif [ $a -gt $b ]; then echo "big";fi
for
-
for 定义
-
for var in item1 item2 … itemN
-
do
-
command1
-
command2
-
…
-
commandN
-
done
-
读取文件遇到空格会自动换行
-
演示
for loop in 123456
do
ehco "hello:"$loop
done
- 实战
# 循环读取文件内容并输出
for i in $( cat dir.txt ); do echo $i; done
while
-
while 定义
-
while condition
-
do
-
command
-
done
-
遇到空格,通用会把空格输出
-
示例
int=1
while(($int<=5))
do
echo $int
let "int++"
done
- 实战
# 循环读取文件内容并输出
while read line; do echo $line; done < dir.txt
$ read line 读取一行
Bash 脚本编写
read 命令
-
read 命令是用于从终端或者文件中读取输入的内部命令
-
读取整行输入
-
每行末尾的换行符不被读入
read 命令使用
-
从标准输入读取输入并赋值给变量
-
read var
-
从标砖输入读取多个内容
-
read var1 var2 var3
-
不指定变量(默认赋值给 REPLY)
-
read
脚本参数传递
-
$0 脚本名称
-
$1~$n 获取参数
-
$# 传递到脚本的参数个数
-
$$ 脚本运行的当前进程ID号
-
$* 以一个单字符串显示所有向脚本传递的参数
-
$? 显示最后命令的退出状态,0表示没有错误,其他任何值表明有错误
基本运算
算术运算
-
a=10 b=20
-
‘+’ 加法
expr $a + $b'
结果是30 -
‘-’ 减法
expr $a - $b'
结果是-10 -
‘*’ 乘法
expr $a \* $b
结果是200 -
‘/’ 除法
expr $b / $a
结果是2 -
‘%’ 取余 `expr $b % $a`` 结果为10
-
‘=’ 赋值 a=$b 将把变量 b 的值赋给 a
-
‘==’ 相等 相同则返回 true: [ $a == $b ] 反之返回false
-
‘!=’ 不相等。不相同则返回true: [ $a != $b ] 反之返回false
-
‘-eq’ 检测相等 [ $a -eq $b ] 反之返回 false
-
‘-ne’ 检测不相等 [ $a -ne $b ] 反之返回fasle
-
‘-gt’ 检测左边是否大于右边
-
‘-lt’ 检测左边是否小于右边
-
‘-ge’ 检测左边是否大于等于右边
-
‘-le’ 检测左边是否小于等于右边
bash 与 linux 命令组合
bash 与目录命令
-
创建目录并生成文件
-
创建文件夹:mkdir test
-
移动位置:cd test
-
把左边的内容重定向到右边,输出与创建文件:echo “hello”>text.txt
-
查看列表:ls
bash 与内存
-
统计内存使用
-
for i in
ps aux| awk '{print $6}' | grep -v 'RSS'
-
count=$[$count+$i]
-
echo “$count/kb”
read a