在输入和输出之间数据的流向称为数据流
数据流
- 变量
- 计算逻辑
- 控制循环
- 输入输出
变量
本地变量 | name=xxx |
局部变量 | local–函数中的变量 |
环境变量 | 带有export |
特殊变量 | 获取当的pid $ $ 取当前参数个数 $ # 获取第*个参数的位置 $ * 获取全部参数$ @ 输出上一条指令的执行状态 $ ? 获取当前进程的实际pid $ BASHPID |
位置变量 | 与$*相似 超过9的位置用{}括住 栗子: $ {12} 第12个位置的参数 |
计算逻辑
- let
$ ( ( 算 术 表 达 式 ) ) ((算术表达式)) ((算术表达式))
栗子:c=$$(( $ A+$ B)) c为A+B的结果
expr 算术表达式
注意: 表达式中个操作数及运算符之间要有空格,而且要使用命令引用 等号左右不能有空格
栗子:c=expr $a + $b //等号后用反单引号括住
- test
条件表达式
[ expression ] //expression:条件
栗子:test [ epression ]
[[ expression ]]
栗子:[[] expression ]
备注expression: -eq,-ne,-lt,-le,-gt,-ge
如果有不了解的地方可以采用linux自带的help命令~~~
控制循环
for while do-while switch-case if
//linux循环中也可以使用break和continue~~
for:
1. for name in 1 2 3 4 5
do
commands
done
2. for((i=1;i<=5;i++))
do
commands
done
3. for循环的嵌套
5. for name in `seq n`----打印1到n个数字的队列
do
commands
done
5.无限循环:for ((;;))
do
commands
done
while:
1. while commands
do
commands
done
2. 无限循环: while :
do
commands
done
switch-case:
case $num in
1) ;;
2) ;;
3) ;;
...
*) ;;
esac
if:
1. if commands
then
commands
fi
2. if commands
then
commands
elif commands
commands
fi
3. if commands
then
commands
elif commands
then
commands
else
commands
fi
输入输出
输 入 : 0
标准输出:1
错误输出:2
>为输出的标志
<为输入的标志
echo “aa” 1>test.txt
将原本输出在控制台的 “aa” 打印到了test文本中,覆盖test.txt中的内容
cat a.txt b.txt 1>test.txt 2>test.txt
同时将2个信息打印到test.txt ,此时,前面的会覆盖后面的,所以在test中只显示第一个信息
cat a.txt b.txt 1>test.txt 2>>1
同时将2个信息打印到test.txt,且将后面的信息追加到前面中,一起覆盖到test.txt文件中
read a<<<“aaaaa”
即 变量a的值为"aaaaa"
read a<<“aa”
会显示输入界面 知道按下Ctrl+c或者输入aa结束,但是a的值为第一次换行前输入的值
read a
会显示输入界面 输入按下回车,a的值为输入的值