1.脚本解释器的选择,根据编程需要或个人习惯,选择合适的解释器,常见的是/bin/sh
和 /bin/bash
2.每个shell脚本文件必须在开头指明脚本解释器,如:
#! /bin/bash
...
3.变量
- 变量申明
#! /bin/bash
name="Denzel"
注意:等号前后没有空格
除了显示赋值还可以用语句赋值
for file in `ls /etc`
- 变量使用
在变量名前加$就可以使用变量
name="Denzel"
echo $name
echo ${name}
花括号是为了帮助解释器识别变量的边界
for skill in Ada Coffe Action Java; do
echo "I am good at ${skill}Script"
done
4.注释,单行用“#"注释,没有多行注释
5.字符串
-
单引号
str='this is a string'
- 单引号里不能使用变量,字符原样输出
- 单引号里不能出现单引号(转移也不可以)
双引号
name="Denzel"
greeting="Hello, the super star, \"$name\"! "
- 拼接字符串
name="Denzel"
greeting="hello, "$name" !"
greeting1="hello, ${name} !"
echo $greeting $greeting_1
- 获取字符串长度
name="Denzel"
echo ${#name} #输出6
- 获取子字符串
string="The man, Denzel, is a super film star."
echo ${string:4:3} #输出man
6. 数组
7.管道
8.分支
- condition
[ -lt ] #小于 [ $UID -lt 0 ]判断UID是否小于0
[ -le ] #小于等于 [ $? -le 0 ]判断上一步执行的返回码是否小于等于0
[ -gt ] #大于
[ -ge ] #大于等于
[ -ne ] #不等于
- if else-if else
if condition
then
cmd1
cmd2
elif condition2
cmd3
else
cmd4
fi
- case
#! /bin/bash
printf "Input integer number: "
read num
case $num in
1)
echo "Monday"
;;
2)
echo "Tuesday"
;;
3)
echo "Wednesday"
;;
4)
echo "Thursday"
;;
5)
echo "Friday"
;;
6)
echo "Saturday"
;;
7)
echo "Sunday"
;;
*)
echo "error"
esac
case语法
case expression in
pattern1)
statement1
;;
pattern2)
statement2
;;
*)
statementn
esac
pattern)
表示一个分支的条件,;;
双分好表示一个分支的结束,*)
表示默认分支,esac
表示case结束
9.循环
- for
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
或者
for (( EXP1; EXP2; EXP3 ))
do
command1
command2
command3
done
- while[当condition写成:时表示死循环]
while condition
do
command
done
- until
until condition
do
command
done
10.函数
11.文件包含
---待完善---