语法格式如下:
case VAR in
Var1) command1 ;;
Var2) command2 ;;
Var3) command3 ;;
...
*) command ;;
esac
一个显示当前操作系统名称的小 demo:
OS=`uname -s`
case "$OS" in
FreeBSD) echo "This is FreeBSD" ;;
AIX) echo "This is AIX" ;;
Linux) echo "This is Linux" ;;
*) echo "Other" ;;
语法格式如下:
for VAR in (list)
do
command
done
一个打印字符串中以空格作为分隔符的所有字符串的列表的小 demo:
#!/bin/bash
aa="This is test"
for VAR in ${aa}
do
echo "$VAR"
done
打印 1 到 5 这 5 个数的小 demo:
#!/bin/bash
for VAR in {1..5}
do
echo $VAR
done
打印当前目录下的文件的小 demo:
for VAR in $(ls)
do
echo "$VAR"
done
格式语法如下:
for ((expression1; expression2; expression3))
do
command
done
用类 C 语法打印 1 ~ 5 的小 demo:
#!/bin/bash
for ((i=1, j=10; i<=5; i++, j--))
do
echo "$i $j"
done
语法如下:
while expression
do
command
done
一个打印 3 2 1 的小 demo:
#!/bin/bash
CONT=3
while [ $CONT -gt 0 ]
do
echo "$CONT"
let CONT-=1
done
读取文件
#!/bin/bash
while read LINE
do
echo `echo $LINKE`
done < 1.txt # < 这个小于号是重定向的意思,后面会讲
上面读取文件是通过重定向的方式来加载的文件,当然,也可以使用管道的方式来读取:
#!/bin/bash
cat aa.txt|while read LINE
do
echo `echo $LINE`
done
语法规则:
select MENU in (list)
do
command
done
一个输出用户选择的城市的小 demo:
select City in ChangSha ChengDu BeiJing
do
case $City in
ChangSha) echo "Hunan" ;;
ChengDu) echo "ChengDu" ;;
BeiJing) echo "BeiJing" ;;
*) echo "Unknow input" && exit 1 ;;
esac
done
注:shell 中也有 break
和 continue
命令,和 Java 中的语法类似,按照 Java 中的语法规则使用即可。
语法格式:
function FUNCTION_NAME(){
command
}
使用函数输出一条语句:
function aa(){
echo "this is function"
}
aa # 调用函数
如何向函数中传递参数?
Shell 中向函数传参是通过位置参数来实现的:
#!/bin/bash
function bb(){
echo $1
echo $2
echo $3
}
bb $1 $2 $3
函数的作用就是减少重复的代码,因此我们很有必要建立自己的函数库:
新建一个 Shell 脚本,专门用来存放自定义的函数,一般作为函数库里面的函数以下划线开头,以便区分。
myfun.sh文件内容如下:
_checkFileExists(){
if [ -f $1 ]; then
echo "File:$1 exists"
else
echo "File:$1 not exists"
fi
}
通过 source
命令或者 .
引入我们建立的函数库脚本,使用:
#!/bin/bash
# . ./myfun.sh
source ./myfun.sh
_checkFileExists /etc/passwd