Shell是用户与Linux操作系统沟通的桥梁
Linux的Shell种类众多,这里我们学习的是bash,也就是Bourne Again Shell
1:由于易用和免费,Bash在日常工作中被广泛使用
2:Bash是大多数Linux系统默认的Shell。
文件名后缀通常是.sh
#!/bin/bash
For循环
格式1 for ((i=0;i<10;i++)) do ... done 格式2 for i in 0 1 2 4 5 8 9 do ... done 格式三 #!/bin/bash for i in {0..9} do echo $i done
条件测试
bash条件测试 命令执行成功与否即为条件测试 test EXPR [ EXPR ]:注意中括号和表达式之间的空格 整型测试: -gt:大于:例如[ $num1 -gt $num2 ]或者test $num1 -gt $num2 -lt:小于 -ge:大于等于 -le:小于等于 -eq:等于 -nq:不等于 字符串测试: > 大于[ "$str1" \> "$str2" ] 注意测试符号左右的空格 < 小于 = !=
算术运算
let varNamer=算术表达式 varName=$[算术表达式] varName=$((算术表达式)) varName=`expr $num1 + $num2` 使用这种格式要注意两个数字和+号中间要有空格。
while/until循环
#!/bin/bash while [ $1 -gt 2 ] do echo "true" sleep 1 done
if判断
#!/bin/bash if [ $1 -eq 1 ] then echo 'one' elif [ $1 -eq 2 ] then echo 'two' elif [ $1 -eq 3 ] then echo 'three' else echo 'none' fi
case判断
#!/bin/bash case $1 in 1) echo 'one' ;; 2) echo 'two' ;; 3) echo 'three' ;; *) echo 'none' ;; esac
循环控制命令-break
#!/bin/bash while [ 1 -eq 1 ] do for ((i=0;i<10;i++)) do if [ $i -eq 2 ] then break 2 fi echo $i done echo 'yes' sleep 1 done
循环控制命令-continue
#!/bin/bash for ((i=0;i<10;i++)) do if [ $i -eq 2 ] then continue fi echo $i done
自定义函数
#!/bin/bash function currtime(){ echo "current time is"`date +%Y-%m-%d` } #!/bin/bash source fun.sh test $1
date
显示当前时间
格式化输出 +%Y-%m-%d
格式%s表示自1970-01-01 00:00:00以来的秒数
指定时间输出 --date='2009-01-01 11:11:11'
指定时间输出 --date='3 days ago'
read
read VAR_NAME
read -p "Enter your name:" VAR_NAME
read如果后面不指定变量,那么read命令会将接收到的数据放置在环境变量REPLY中
read -t 5 -p "enter your name:" VAR_NAME
read -s -p "Enter your password: " pass
后台模式运行脚本
在脚本后面加一个& test.sh & 这样的话虽然可以在后台运行,但是当前会话窗口关闭之后这个脚本也会停止运行 使用nohup test.sh & nohup命令将进程和终端分开,所以关闭当前会话窗口不会影响这个进程的执行。 nohup会在当前执行的目录生成一个nohup.out日志文件