1.if选择结构:
if [ -e test ]; then echo exist;else not exist;fi #exist,如果test文件存在则输出exist;否则输出not exist
if [ 2 -eq 2 ]; then echo true;else echo false;fi #true,-eq相等
if [ 3 -eq 2 ]; then echo true;else echo false;fi #false
[ -e test ]&&echo exist||echo not exist #exist,如果[ -e test ]为真就执行&&后面的表达示,如果为假就执行||后面的表达示
echo "1"&&echo "2"||echo "3"&& echo "4"|| echo "5"|| echo "6"&&echo "7"||&& echo "8"|| echo "9" #12478
2.for循环:
1)for(起始值;终止值;step)
for((i=0;i<10;i++));do echo $i;done #打印出1到10
array=(1 2 3 4 5);for ((i=0;i<${#array[@]};i++));do echo $i;done #打印出array数据的下标0,1,2,3,4
2)for...in...语句
array=(1 2 3 4 5);for i in ${array[@]};do echo $i;done #打印出array数据的元素1,2,3,4,5
for s in `ls`;do echo $s;done; #打印出ls命令的结果
3.while循环
i=0;while [ $i -lt 3 ];do echo $i;((i++));done #打印出0,1,2,-lt小于
i=0;while [ $i -ne 5 ];do echo $i;((i++));done #打印出0,1,2,3,4,
vim 3.txt->按键盘上的i->在3.txt中输入内容->按ESC键->输入:wq
执行:while read x;do echo $x;done <3.txt #逐行打印出3.txt的内容,read输出从键盘上接收到的内容
read命令:
read a:echo $a #我们从键盘上输入1111,屏幕上输出1111
read -p "enter:" a;echo $a $屏幕显示enter: 我们输入2222,最终显示2222
输出重定向:
echo "today is sunday" >3.txt;cat 3.txt #看到3.txt文件中的内容变成today is sunday
echo "tomarow is monday" >>3.txt;cat 3.txt #看到3.txt中的内容没有被覆盖只是被追加了
输入重定向:
while read x;do echo $x;done <3.txt #将3.txt中的内容读取出来,打印出来
4.退出控制
echo * #打印出当前目录下的所有文件
for f in *;do echo $f;done #逐行打印出当前目录下的所有文件名
for f in *;do echo $f; if [ -d $f ];then break;fi;done #逐行打印出第一个目录后循环就结束
for f in *;do echo $f; if [ -d $f ];then echo $f is file;else continue;fi;done #逐行打印出当前目录下的所有文件名,当遇到文件而非目录时,打印"文件名 is file"
5.bash的运行环境
1)bash命令进入一个子shell环境
echo $$ #输出当前程序的进程号
bash #进入一个子进程
2)()进入一个子shell,{}是同一个shell环境
6、&将程序调入后台执行命令
sleep 50&
jobs
bg 1 #调入后台执行
fg 1 #从后台调回前台执行
ps -e #显示全部进程
ps -ef #-f显示全名称
7、linux的环境变量
ls -la #显示当前目录下所有文件包括隐藏目录,可以看到.bash_profile文件,该文件是设置
vim .bash_profile #打开环境变量的定义文件
source ~/.bash_profile #执行环境变量,让它生效