shell笔记(基本知识)

一、编写第一个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;
双引号中使用$会将变量的值的读取出来使用。
注意:反引号表示命令替换,例如:
\$表示$
\`表示`
\"表示"
\\表示\
 
四、调用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/
----------------------------------------------------------------------------------
 
 
posted @ 2015-12-24 13:28  小清奈  阅读(530)  评论(0编辑  收藏  举报