Shell 编程入门(三)
程序员文章站
2022-05-06 16:12:12
...
一、Case 判断
语法格式如下:
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 循环
语法格式如下:
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
类 C 的 for 循环
格式语法如下:
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 循环
语法如下:
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 循环
语法规则:
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
四、重定向
输出重定向
-
标准输出覆盖重定向
>
:将命令的输出,重定向到其它的文件当中。
-
标准输出追加重定向
>>
:将命令的输出,重定向追加到其他文件末尾。
输入重定向
-
标准输入重定向
<
:命令将从指定的文件中读取输入而不是键盘输入。
上一篇: Java实现学生管理
下一篇: c++ 实现学生类设计