创建shell程序的步骤:
第一步:创建一个脚本文件.sh。
第二步:授予权限使它可以执行chmod u+x .sh

第三步:执行 ./example 或者 sh example
脚本调试:  
      sh -x script : 执行脚本显示所有变量的值

  sh -n script : 不执行脚本,只是检查语法,返回语法错误

shell结构:

1. #!指定执行脚本的shell

2. #注释行

3. 命令和控制结构

 

变量: 临时变量和永久变量(环境变量)

设置变量:  习惯上用大写字母来命名变量。变量名只能以字母表中的字符开头,不能用数字。

变量赋值: 赋值号“=”两边应没有空格

  定义时赋值,如NUM=1

  将一个命令的执行结果赋给变量,如:TIME=`date`

  将一个变量赋给另一个变量,如:A=$B

注:

包含多个字的变量:  $NAME=Mike Ron会报错,要使用 $NAME=“Mike Ron”或$NAME=‘Mike Ron’

单引号和双引号的区别:

   单引号之间的内容会被bash进行解释,会原封不动地指定给了变量。

双引号中的内容只有在【$、`  `、双引号、/和换行符】五种特殊字符修饰时才可以被转义输出,其他的不动。

删除变量: #unset NAME

查看变量:

  列出所有变量: # set

  使用echo命令查看变量值。例如:echo $A

位置变量:$n 这个程序的第n个参数值,n=1-9

例如:

  ls -l file1 file2 file3

  $0 这个程序的文件名 ls -l

 
特殊变量:
$? 执行上一个命令的返回值   $* 这个程序的所有参数   $# 这个程序的参数个数   $$ 这个程序的PID   $! 执行上一个后台命令的PID

变量测试语句:test    可用[]进行简化

整数测试:

test int1 -eq int2 测试整数是否相等
test int1 -ge int2 测试int1是否>=int2
test int1 -gt int2 测试int1是否>int2
test int1 -le int2 测试int1是否<=int2
test int1 -lt int2 测试int1是否<int2
test int1 -ne int2 测试整数是否不相等

字符串测试:

test str1=str2 测试字符串是否相等
test str1!=str2 测试字符串是否不相等
test str1 或 test -n str1 测试字符串是否不为空
str1 test -z str1 测试字符串是否为空

文件测试:

test -d file 指定文件是否目录
test -f file 指定文件是否常规文件
test -x file 指定文件是否可执行
test -r file 指定文件是否可读
test -w file 指定文件是否可写
test -a file 指定文件是否存在
test -s file 文件的大小是否非0

流控制语句:

exit语句:退出程序执行,并返回一个返回码,返 回码为0表示正常退出,非0表示非正常退出。

选择语句:if语句  或  case---esac语句

格式一:if 条件 then 命令 fi

格式二:

if 条件1  then

  命令1 

elif 条件2 then

  命令2

else

  命令3

fi

多个条件的联合:

  逻辑与:-a

  逻辑或:  -o

格式三:

case 变量 in   
  字符串1)            
    命令列表1
       ;;       ………      字符串n)    
    命令列表n      ;;
esac
 
格式四:把关键字中每一项做成类似表单的形式,通过输入交互的方式执行相应的命令
 select  变量  in  关键字
 do
  命令列表
 done

 
 

循环语句:

格式一:

   for 变量 in 名字表

         do

    命令列表

         done

格式二:until当条件为真时执行;

  while 条件

  do

    命令

  done

格式三:until当条件为假时执行;

  until 条件

  do

    命令  

  done

跳出循环:

break:跳出整个循环

continue:跳过本次循环,进行下次循环

参数移动:

shift:参数左移,每执行一次,S#值减1,用于分别处理每个参数,移出去的参数不再可用;

Shell命令:

read命令:从键盘读数据,赋值给变量    如:read USERNAME

expr命令:对整数型变量进行算术运算    如: $ expr 3 \* 10  ,   var2=`expr 30 /  $var1`  【注意不是「'」而是 「`」】

注意:

  运算符左右都有空格
  使用乘号时,必须用反斜线屏蔽其特定含义。因为shell可能会误解显示星号的意义。

awd命令: 

  awk -F  分隔符  '命令'

注:分隔符不填,默认为空格;

例如:输入系统中UID为0的用户名

  awd -F: '$3==0 {print $1}'  /etc/passwd

应用函数:

定义函数:

  函数名()

  {   

    命令列表

  }

调用函数: 函数名  参数1 参数2…

注:函数的中变量均为全局变量

Shell编程语法的更多相关文章

  1. Linux Shell 编程语法

    原文地址:http://www.cnblogs.com/fhefh/archive/2011/04/13/2014967.html.感谢作者的无私分享 编写代码 在计划好要程序干什么以及如何使用程序的 ...

  2. Linux shell编程语法

    由于条件判断和循环跟其他语言都大同小异,学过编程的话很好理解,这里只贴出格式,不具体写用法了.(select菜单会详细讲一下) 条件判断 if条件判断 普通if条件判断: if 判断条件1; then ...

  3. linux —— shell 编程(编程语法)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...

  4. Linux系统编程(15)——shell脚本语法

    Shell字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似. 单引号 s ...

  5. shell编程基础(二): shell脚本语法之分支语句和循环语句

    一.分支语句 1.条件测试:test [ 命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与 ...

  6. 【shell编程】之基础知识-语法

    一.shell变量 1.定义变量 定义变量时,变量名不加美元符号($,PHP语言中变量需要), 如: your_name="runoob.com" 注意,变量名和等号之间不能有空格 ...

  7. linux shell 基本语法之快速上手shell编程

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  8. shell编程--基本格式,基本语法,运算符,expr,(()),$[]

    02/shell编程 Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell Shell也是一门编程语言."."号执行脚本时,会让脚本在调用者 ...

  9. shell编程基础语法

    创建文件:touch aaa.sh 把文件变成可执行的命令: chmod +x /Users/dream-mac/Desktop/aaa.sh (这里是文件路径,如果在当前路径下,只需要把文件名写到这 ...

随机推荐

  1. textview的阴影线

    android:shadowColor="#000000" android:shadowDx="1" android:shadowDy="1" ...

  2. Linux命令应用大词典-第35章 终端

    35.1 tty:显示当前连接到当前标准输入的终端设备文件名 35.2 consoletype:显示连接到标准输入的控制台类型 35.3 fgconsole:显示活动的虚拟终端数量 35.4 ming ...

  3. Python 的非正式介绍

    在下面的例子中,通过提示符 (>>> 与 ...) 的出现与否来区分输入和输出:如果你想复现这些例子,当提示符出现后,你必须在提示符后键入例子中的每一个词:不以提示符开头的那些行是解 ...

  4. Python爬虫使用浏览器的cookies:browsercookie

    很多用Python的人可能都写过网络爬虫,自动化获取网络数据确实是一件令人愉悦的事情,而Python很好的帮助我们达到这种愉悦.然而,爬虫经常要碰到各种登录.验证的阻挠,让人灰心丧气(网站:天天碰到各 ...

  5. lintcode166 链表倒数第n个节点

    链表倒数第n个节点 找到单链表倒数第n个节点,保证链表中节点的最少数量为n. 思路:设置两个指针first,second指向head,first指针先向前走n,然后两个指针一起走,first指针走到末 ...

  6. Spring MVC 整合Swagger的一些问题总结

    在做Spring MVC 整合swagger的时候,遇到的两个问题: 第一个问题 在网上找了一些Spring MVC 和Swagger的例子,照着一步步的配置,结果,到最后,项目都起来了,没有任何问题 ...

  7. HADOOP docker(六):hive简易使用指南

    前言1.hive简介1.1 hive组件与相应功能:1.2 hive的表类型1.3 分区表1.3 分隔符1.4 hive的数据存储2.数据类型2.1 基本数据类型2.1 复杂数据类型2.3 NULL3 ...

  8. Alpha 冲刺(2/10)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助前端界面的开发 搭建测试用服务器的环境 完成 ...

  9. Java常用类之Math类

    Java 的常用类Math类: java.lang.Math 提供了系列的静态方法用于科学计算,其方法的参数和返回值类型一般为 double 类型. 如: 1. public static final ...

  10. iOS音频播放概述

    在iOS系统中apple对音频播放需要的操作进行了封装并提供了不同层次的接口 下面对其中的中高层接口进行功能说明: Audio File Services:读写音频数据,可以完成播放流程中的第2步: ...