shell基本语法
shell传参数:
$#: 传给脚本或函数的参数的个数
$0:是脚本本身的名字
$n: 脚本或函数的第n个参数
$@:是传给脚本或者函数的所有参数的列表
$*: 约等于$@,所有参数的列表
$$: 这个脚本的PID
$!: 执行上一个背景指令的PID
$?: 执行上一个指令的返回值
#!/bin/sh echo "shell script name: $0" echo "arg num: $#" echo "args are: $@" for arg in "$@" do echo $arg done echo $*
1.for语句
#!/bin/sh for file in $(ls /home/sfl/mytest/shell_test |grep sh) do echo $file done for i in 0 1 2 3 4 5 6 7 8 9 #输出10次 do echo $i done for i in "0 1 2 3 4 5 6 7 8 9" #只循环1次,“”中的是一个变量 do echo $i done
2.until语句
END_CONDITION=end until [ "$var1" = "$END_CONDITION" ] do echo "Input variable #1 " echo "($END_CONDITION to exit)" read var1 echo "variable #1 = $var1" echo done exit 0
3.if语句
#!/bin/bash echo "Input a number #1 " read num #从命令行中获取一个参数给num echo "variable #1 = $num" if [ $num -lt 60 ] then echo "you are not pass" elif [ $num -lt 70 ] && [ $num -ge 60 ] #多个条件的判断 then echo "pass" elif [[ $num -lt 85 && $num -ge 70 ]] #如果放在一起,要注意是双方括号,不要写成[ $num -lt 85 && $num -ge 70 ] then echo "good" elif (( $num <= 100 )) && (( $num >= 85 )) #对于有语言基础的人来说,这种写法让人觉得很舒服,不要忘了是双小括号 then echo "very good" else echo "num is wrong" fi #if要有结束标签的,根XML很像,不闭合,就报错 exit 0
4.case语句
#!/bin/sh #useage:./shell_case.sh start/stop/restart case $1 in start) echo "start ok" ;; #注意一点,要注意是双分号 stop) echo "stop ok" ;; restart) echo "restart ok" ;; *) echo "no param" ;; esac #注意闭合标签 exit 0