一、编写第一个shell程序
实例1:
【程序】
1 #!/bin/sh 2 echo "hello word !"
【运行】
【说明】
第一行:#i/bin/sh 表示使用Ubuntu系统中/bin/sh下的一个解释器来解释shell,进行运行。
第二行:echo "hello word !" 表示打印“hello word”这个字符
另外在shell中 # 是用来注释的
二、shell中的变量
(1)变量定义:直接使用=即可
(2)变量赋值:直接使用=
(3)变量引用:变量前面在$;(两种用法:$var 和 ${var} )
实例2:
1 #!/bin/sh 2 string="new string" 3 echo $string
运行结果:
三、单引号和双引号的区别
实例3:
1 #!/bin/sh 2 # 单引号和双引号演示 3 str="new string" 4 echo '$str' 5 echo $str 6 echo "$str"
运行结果:
说明:单引号表示直接的替换,即使有$符号,也是直接输出$str;
双引号中使用$会将变量的值的读取出来使用。
注意:反引号表示命令替换,例如:
\$表示$
\`表示`
\"表示"
\\表示\
参考资料:http://blog.csdn.net/miyatang/article/details/8077123
四、调用linux下的命令
实例4:
1 #!/bin/sh 2 # 在linux下调用命令 3 mkdir test_dir # 在当前目录下创建一个目录 4 cd test_dir # 进入test_dir目录 5 touch a.c # 创建一个文件 6 cd .. # 返回上层目录 7 echo `pwd` # 打印当前目录
说明:在shell脚本程序中,使用linux下的命令是直接调用的。关于获取linux命令的返回值是使用反引号(键盘上ESC下面的那个按键,符号是`)。
五、if结构
典型表达式:
if [表达式]; then
xxx
else
xxx
fi
应用:
(1)判断文件是否存在。(-f),使用举例:if [ -f b.c ]; then
(2)判断目录是否存在。(-d),使用举例:if [ -d "/mnt" ]; then
(3)判断字符串是否相等。(=),使用举例:if [ "abc" = "abc" ]; then
(4)判断数字是否相等(-eq)、大于(-gt)、小于(-lt)、大于等于(-ge)、小于等于(-le)。使用举例:if [ $num1 -eq $num2 ]; then
(5)判断字符串是否为空。(-z),使用举例:if [ -z "abc" ]; then
注意:在[]中的空格,前后都需要空格,否则会运行错误。
(6)if判断式中'-o'表示逻辑或。使用举例:if [ "1" = "2" -o "3" = "3" ]; then
(7)逻辑与&&和逻辑或||与简写的if表达式相结合
例如:
[ "123" = "abc" ] || echo "not equal" # 执行结果:输出not equal
[ "123" = "123" ] && echo "equal" # 执行结果:输出equal
说明:在||中,前面的语句如果成立,则后面的命令不执行;如果不成立,则后面的命令执行。
六、echo创建文件
(1)在shell中可以直接使用echo指令创建一个新的文件
例:echo "abc" > a.txt # 创建一个文件,内容和abc
(2)>>表示在文件末尾追加一个内容
例:echo "cde" > a.txt # 在文件末尾追加一个字符"cde"
九、shell的传参
例:shell程序
运行结果:
$0是执行这个shell程序的解析的名字,$1是第一有效参数的值,$2是第二个……
六、for、while循环和case结构
实例5:
1 while [ $# -gt 0 ] ; do 2 case "$1" in 3 --) shift ; break ;; 4 -a) shift ; APPEND=yes ;; 5 -n) shift ; BOARD_NAME="${1%%_config}" ; shift ;; 6 *) break ;; 7 esac 8 done
(1)上面是一个while和case嵌套的一个例子。
(2)break对case是没有作用的,表示的是跳出while循环。
(3)case中语句是以;;作为结尾的。
(4)shif是表示输入的参数左移一个。
(5)$#表示执行shell时传递的参数个数
(6)$1表示shell的第一个参数
----------------------------------------------------------------------------------
声明:部分内容摘录至《朱老师物联网视频教程》http://www.zhulaoshi.org/
----------------------------------------------------------------------------------