1.管道(l)
该命令不是系统命令。
释义:将一个命令的输出作为另一个命令的输入
例:
tail -50 logs | grep -a XXX
从logs文件尾部50行中搜索包含“XXX”的信息。log尾部50行的输出作为grep命令的输入。
grep "hello" file.txt | wc -l
在file.txt中搜索包含有”hello”的行并计算其行数。在这里grep命令的输出作为wc命令的输入。
2.流程控制
if.....;then......
elif......then......
else......
3.测试命令“[ ]”
注意:[ ]中间的空格不能省略!
[ -f "somefile" ] :判断是否是一个文件
[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
[ -n "$var" ] :判断$var变量是否有值
[ "$a" = "$b" ] :判断$a和$b是否相等
4.匹配字符串(case)
case.....in
......)
do something here;;
esac
例:
#!/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
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
$1变量包含传递给程序的第一个参数。
5.选择(select)
select var in ... ; do
break
done
.... now $var can be used ....
break
done
.... now $var can be used ....
例:
#!/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"
echo "What is your favourite OS?"
select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
break
done
echo "You have selected $var"
运行:
What is your favourite OS?
1) Linux
2) Gnu Hurd
3) Free BSD
4) Other
#? 1
You have selected Linux
1) Linux
2) Gnu Hurd
3) Free BSD
4) Other
#? 1
You have selected Linux