常见的shell类型
- Bourne Shell (/bin/sh)
- Bourne Again Shell (/bin/bash)
- C Shell (/usr/bin/csh)
- K Shell (/usr/bin/ksh)
- Shell for Root (sbin/sh)
使用shell
创建一个shell
vim test.sh
编写格式
#!/bin/bash
echo "hello!"
调用
./test.sh
Bash用法
变量
变量规则
- 命名智能使用英文数字和下划线,且不能数字开头
- 中间不能有空格
- 不能使用标点符号
- 不能使用关键字
命名:name = “abc”
打印:echo $name
变量的操作
name = "abc"
readonly name#只读变量,无法进行修改等其他操作
删除变量
name = "abc"
unset name
变量类型
- 字符串:name=“abc”
- 拼接字符串:name=“a,”$b"!"
- 数组:name=(a b c c d)
- 取数组:valuen=${name[n]}
- 单独赋值:name[0]=a
- 打印变量:echo ${name[*]}
条件分支
if条件
if 条件
then
语句
语句
fi
if[2==2];then echo "true";echo "false";fi
实战:
如果 a>b输出big,a<b输出samll,a=b输出equal
if [ $a -eq $b ]; then echo "equal"; elif [ $a -lt $b ]; then echo "samll"; elif [ $a -gt $b ]; then echo "big"; fi
for条件
for a in b
do
语句
done
实战:
循环读取文件并打印输出
for i in $(cat test.txt);do echo $i;done
while 条件
while 条件
do
语句
done
实战:
循环读取文件并打印输出
while read i;do echo $i;done<test.txt
注:for循环打印同一行有空格会换行,while不会
Bash脚本编写
read命令
- read是用于从终端或文件中读取输入的内部命令
- 读取整行输入
- 每行末尾的换行符不被读入
read使用
- 从标准输入读取输入并赋值给变量
- read a
- 从标准输入读取多个内容
- read a b c
- 不指定变量(默认赋值给REPLY)
- read
脚本参数传递
标识 | 解释 |
---|---|
$0 | 脚本名称 |
$1 ~ $n | 获取参数 |
$# | 传递到脚本的参数个数 |
$$ | 脚本运行的当前进程ID号 |
$* | 显示所有的传递参数 |
$? | 退出状态 |
算数运算
符号 | 语句 |
---|---|
+(加法) | `expr $a + $b`` |
-(减法) | `expr $a - $b`` 928sr410 |
*(减法) | `expr $a * $b`` |
/(减法) | `expr $a / $b`` |
%(取余) | `expr $a % $b`` |
=(赋值) | a=$b |
==(相等) | 相同返回true,否正返回false |
!=(不相等) | 不相同返回true |
-eq | 检测相等 [ $a -eq $b ] |
-ne | 检测相等 [ $a -ne $b ] |
-gt | 检测左边大于右边> [ $a -gt $b ] |
-lt | 检测左边小于右边< [ $a -lt $b ] |
-ge | 检测左边大于等于右边>=[ $a -ge $b ] |
-le | 检测左边小于等于右边<=[ $a -le $b ] |
bash与目录命令(与Linux一致)
创建目录并生成文件
- mkdir test
- cd test
- echo"hello">test.txt
- ls
bash统计内存
for i in `ps aux | awk '{print $6}' | grep -v 'RSS'`
count=$[$count+$i]
echo "$count/kb"