Shell编程入门
一、Shell入门
我们先看一个小例子,永恒的经典:Hello World
#!/bin/sh var="Hello World!" echo $var
保存,文件名为:hello
我们发现文件的第一行虽是一个注释,但是说明了文件的执行是由/bin/sh来执行,所以我们这么来执行这个文件:
/bin/sh hello
就可以看到结果了,但我们知道在Linux下,一个文件是否可以执行是由文件属性来决定的,那么我们是否可以给他加上可执行权限,来执行这个文件呢?
先执行如下命令:
chmod u+x hello
然后我们在直接敲命令:hello,看到什么现象?
所以一个文件被执行有这两个途径
二、Shell语法入门
1. 输入/输出内部命令
①. echo 输出命令
②. read 输入命令
例如:
#!/bin/sh echo Name: read NAME echo Phone: read PHONE echo SNAME,SPHONE > contact.txt
2. if条件语句
在看if条件语句之前,我们先看一下:测试命令执行结果,在Linux下正确的命令执行结果为0,否则为其他值,我们可以用:
echo $?
来看上一个命令的执行结果,懂了这些之后,我们在看那些常见语法
if 条件测试命令串 then 条件为真时执行的命令 else 条件为假时执行的命令 fi
注:if和then必须是两行,如果放一行,请在then前加“;”
例如:
#!/bin/sh echo Input file name: read NAME if [ -d $NAME ] then echo Dir else echo Not Dir fi
3. case条件语句
case 条件测试命令串 in 表达式1) 分支1执行的命令 ;; 表达式2) 分支2执行的命令 ;; *) 其他命令 ;; esac
例如:
#!/bin/sh echo Input file name: read NAME ft=`file "$NAME"` case "$ft" in "$NAME: ASCII"*) echo "$NAME" is ASCII text ;; "$NAME: directory"*) echo "$NAME" is DIRECTORY ;; *) echo "$NAME" is OTHER FILE TYPE ;; esac
注:本文件第四行第四个字符为~上的那个点,不是单引号!
4. for循环语句
for 变量名 [in 数值列表] do 循环执行的命令串 done
例如:
#!/bin/sh for var in `ls` do echo $var done
5. while循环语句
while 循环条件命令串 do 循环命令串 done
例如:
#!/bin/sh VAR=1 while [ $VAR -le 9 ] do RESULT=`expr $VAR * $VAR` echo $VAR*$VAR=$RESULT VAR=`expr $VAR + 1` done
6. until 循环语句
until 循环条件命令串 do 循环命令串 done
例如:
#!/bin/sh VAR=1 until [ $VAR -gt 9 ] do RESULT=`expr $VAR * $VAR` echo $VAR*$VAR=$RESULT VAR=`expr $VAR + 1` done
7. 函数
函数名() { 命令串 }
例如:
power() { VAR=1 until [ $VAR -gt 9 ] do RESULT=`expr $VAR * $VAR` echo $VAR*$VAR=$RESULT VAR=`expr $VAR + 1` done } echo Power: power
这是一个无参函数,下面我们看看有参函数
#!/bin/sh sum() { SUM1=0 while [ $# -ne 0 ] do SUM!=`expr $SUM1 + $1` shift done echo SUM:$SUM! } echo Please some number: read NUM sum $NUM
这是一个求和函数,保存为sum,这样我们可以执行sum 1 2 3 3 4 5,expr 为计算的意思,shift为移位,也就是把我们输入的1 2 3 4 5,依次变为第一个带入到本程序的第七行的“$1”
三、调试Shell程序
因为Shell都是通过vim编写,并没有像写Java那样的IDE,所以调试错误就很重要了,因为Shell的关键字都是小写,所以我们把一般变量都大写,这些都是一般错误,但有时候一个复杂的程序,我们怎么debug呢?这就需要我们调试跟踪,调试跟踪有两个参数:
1. -v选项
2. -x选项
例如:我们可以 /bin/sh -v 程序名或者 /bin/sh -x 程序名,这个比较简单就不多说了,感兴趣的可以自己试一下。
作 者: BridgeLi,https://www.bridgeli.cn
原文链接:http://www.bridgeli.cn/archives/163
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
近期评论