1.#!+执行位置
#!/system/bin/sh
2.echo +输出内容
echo "What is your choice?"
3.注释 #
# this is abc
4.变量定义及使用
a="hello world"
echo $a
echo "this is ${a}"
5.判断条件
通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限(-r 可读)
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
[ $# -lt 3 ] :判断输入参数是否小于3个 (-eq:= , -o:|| , -a:&& , -lt:< , -gt:>)
6.if语句
if ....; then
....
elif ....; then
....
else
....
fi
#!/system/bin/sh
if [ "$SHELL" = "/system/bin/bash" ]; then
echo "your login shell is the bash (bourne again shell)"
else
echo "your login shell is not bash but $SHELL"
fi
简洁形式
[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"
[ -r "$mailfolder" ]||{ echo "Can not read $mailfolder" ; exit 1; }
echo "$mailfolder can read"
7.case语句
case ... in
...) do something here ;;
esac
#!/system/bin/sh
ftype=`file "$1"`
case "$ftype" in
"$1: Zip archive"*)
unzip "$1" ;;
"$1: gzip compressed"*)
gunzip "$1" ;;
"$1: bzip2 compressed"*)
bunzip2 "$1" ;;
*) error "File $1 can not be uncompressed with smartzip";;
esac
将以上脚本命名为
smartzip,执行命令smartzip articles.zip ,其中$1=articles.zip
8.select语句
select var in ... ; do
break
done
#!/system/bin/sh
echo "What is your favourite OS?"
select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
break
done
echo "You have selected $var"
9.while语句
while ...; do
....
done
while [ -n "$1" ]; do
case $1 in
-h) help;shift 1;; # function help is called
esac
done
10.for语句
for var in ....; do
....
done
#!/system/bin/sh
for var in A B C ; do
echo "var is $var"
done
for var in $*; do
....
done
$*表示所有输入参数
for filename in `ls` #获取目录下所有文件名
11.引号使用
#!/system/bin/sh
echo $SHELL
echo "$SHELL"
echo '$SHELL'
echo "*.jpg"
输出:
/system/bin/bash
/syetem/bin/bash
$SHELL
*.jpg
单引号可以防止任何变量扩展,双引号可以防止通配符扩展但允许变量扩展。
12.函数
help()
{
}
help
#!/system/bin/sh
help()
{
echo "help"
}
[ "$1" = "-h" ] && help
#/system/bin/bash
p_num ()
{
num=$1
echo $num
}
a=1
p_num $a
13.输入read
read name
14.退出
exit 0 #正常退出
exit 1 #出错退出
15.运算
a=$(($b+1))
16.清屏
clear
17.删除参数
shift:将位置参数左移一位,如原来的$1就变成$0了。
18.系统参数
DATE=`date`
echo "Date is $DATE"
19.数组
array_name=(value0 value1 value2 value3)
或者
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
输出
${array_name[1]}
${array_name[@]}
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}
20.中止
break n
continue n
n代表跳出几重循环