1,获取命令执行的结果,字符串拼接(脚本最常使用的功能)
 
cmd_result=$(date +%Y%b%d)        //使用变量获取命令执行的结果 或者 cmd_result=`date +%Y%b%d`   反引号
 
mysqldump -uroot -pfeng --all jiale>/root/jiale$cmd_result.sql    //执行字符串和变量拼接,也可以使用${cmd_result}

2.使用#来注释,以及脚本执行的方法
脚本的开头一般是
#!/bin/sh
因为脚本前两个字符一般是#!,系统会将这两个字符之后的字符作为执行脚本的命令解释器的绝对路径(也可以是其他脚本解释器的路径)
脚本执行的三个方法
(1)chmod  u+x  脚本名        //给脚本执行权
         ./脚本名
(2)bash  脚本名                     //直接使用shell启动命令一般比上面的方法要慢一些
         sh  脚本名
(3)使用bash内部命令source或“.”运行脚本
        source  脚本名
        . 脚本名               //“.”之后必须有一个空格

 
3,I/O重定向,管道(|)和后台运行
 
cmd1 > file1 将命令1 的结果输入到文件1中
cmd1 > >file1 将命令1 的结果追加到文件1中
cmd1 < file1 将文件1 的内容输出作为 命令 1执行
cmd1 << file1 将文件1 的内容追加到 命令 1
cmd1 2> file1 错误输出重定向,命令1执行的错误信息会输入给文件1
cmd1 &> file1 标准输出与错误输出重定向,标准输出和错误输出一起输入到文件1中,屏幕将无显示
 
命令1 |命令2|命令1
将命令1的结果,输出给命令2,作为命令2的输入,再将命令2的结果输出给命令3,作为命令3的输入
 
命令1 |&命令2|命令1
将命令1的标准结果和标准错误信息,输出给命令2,作为命令2的输入,再将命令2的结果输出给命令3,作为命令3的输入
 
在命令后加入&,可以让命令到后台运行
COMMAND &
# gcc   myproc.c&

4,命令执行顺序
分号,多个命令用分号隔开,最后一个回车后,命令按顺序执行
&&  连接连个命令,第一个命令执行成功后才能执行第二个命令 
||      连接连个命令,第一个命令执行失败后才能执行第二个命令 
 

5,shell通配符
?       表示任意单个字符
*       表示任意长度字符
[ ]     表示匹配[  ]给定字符集合的任意一个字符
{ }    表示将{ }中的字符串,以及前导和后继字符作为匹配条件

6,单引号,双引号,反引号
单引号 括起来的字符都会变成普通字符串
双引号 括起来的字符除 $ "  `  \  外都会变成普通字符串
反引号 括起来的字符串会被作为命令执行
 
 

declare [-afirx]  声明变量类型
-a    定义为数组
-f     定义为函数
-i     定义为整数
-r     定义为只读
-x     定义为通过环境输出比变量
 
declare -i    plaus=1+2+4*4-5
echo  plaus
 

 
test命令(如果不想使用tset可以使用“[ 表达式 ]”来代替,表达式前后有空格)
 
test  -e  file        测试文件是否存在,存在为真
test -d  file         测试文件是否存在且是目录,是则为真
test  -x  file        测试文件是否存在且可以执行,是则为真
test  -r  file        测试文件是否存在且为只读,是则为真
test  -w  file       测试文件是否存在且可写入,是则为真
 
test  -b  file       测试文件是否存在且为块设备,是则为真
test  -c   file       测试文件是否存在且为字符设备,是则为真
test  -s   file       测试文件是否存在且长度大于0,是则为真
test  -f   file       测试文件是否存在且是普通文件,是则为真
 
数值比较测试
-eq       等于
-ne       不等于
-gt        大于
-lt         小于
-ge       大于等于
-le        小于等于
 
字符串比较测试
-z     s1      如果字符串s1的长度是0,值为真
-n     s2     如果字符串s1的长度不为0,值为真
s1=s2       相等值为真
s1!=s2      不相等值为真
s1              如果字符串s1不是空串,值为真
 
 

控制结构
if  then  else  fi
 
echo "press y to continue"
read yn
if [ "$yn"="y" ] || [ "$yn"="Y"]; then echo "script is running"
else
echo "Stop"
fi
 
case  ......esac
 
echo "press you select "
read number
 
case  $number  in                       //如果没有read 交互式输入 ,直接输入使用$1   即 (case  $1  in   )
one)   echo   "you choice is one"
;;
 
tw0)     echo   "you choice is two"
;;
 
*)     echo   "Usage {one|two}"
exit 1
esac
 
for (( 条件1;条件2;条件3))
for var    in   var1   var2  var3
 
 
 
while[ 条件1 ] && { || }  [ 条件2 ]      当条件符合时就继续
until [ 条件1 ] && { || }  [ 条件2 ]       直到条件符合时才继续
 
函数
函数名() {
 
 
}
 

脚本调试
sh  [-nvx]   script.sh
-n   不执行脚本,查询脚本内容语法,错误则列出    sh -n   script.sh
-v   执行脚本之前先把脚本内容显示在屏幕上
-x   将用到的脚本内容显示在屏幕上
   
 
 
 
 
 
 
 
 
 
 
 
 

linux shell 编程的更多相关文章

  1. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

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

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

  3. linux shell编程总结

    linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...

  4. Linux Shell编程参考大全

    本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...

  5. Linux Shell编程中的几个特殊符号命令 & 、&& 、 ||

    https://blog.csdn.net/hack8/article/details/39672145 Linux Shell编程中的几个特殊符号命令 & .&& . || ...

  6. linux shell 编程参考

    #!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(m ...

  7. Linux Shell编程与编辑器使用详解

    <Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...

  8. linux shell编程,先等10秒再判断是否有进程存在,存在就再等10秒再杀了进程才运行

    linux shell编程,先等10秒再判断是否有进程存在,存在就再等10秒再杀了进程才运行 crontab每分钟执行一次,但5秒以上才有更新数据,有时候一分钟可能跑不完上一个进程,需要先等10秒再判 ...

  9. 一文学完Linux Shell编程,比书都好懂

    一. Shell 编程 1. 简介 Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务. Shell 既是一种命令语言,又是一种程序设计语言. Shell scr ...

  10. 前端学习 linux —— shell 编程

    前端学习 linux - shell 编程 shell 原意是"外壳",与 kernel(内核)相对应,比喻内核外的一层,是用户和内核沟通的桥梁.shell 有很多种,国内通常使用 ...

随机推荐

  1. Android Studio开发JNI工程

    转:http://www.2cto.com/kf/201412/361768.html 使用Android Sutdio创建一个新的工程后,接下来记录创建NDK工程的基本步骤. 本文将达到: 1. 创 ...

  2. HTML5 Canvas实战之刮奖效果

    近年来由于移动设备对HTML5的较好支持,经常有活动用刮奖的效果,最近也在看H5方面的内容,就自己实现了一个,现分享出来跟大家交流. 1.效果 2.原理 原理很简单,就是在刮奖区添加两个canvas, ...

  3. netbeans项目中排除node_modules文件夹

    由于项目中的javascript使用了gulp编译技术,所以在web目录下有js的源码目录,其中又有gulp所使用的nodeJS模块,node_modules下面小文件很多,所以造成netbeans扫 ...

  4. 在使用sqlite时淌过的坑

    以前一直用sqlite.net 1.0.66.0版本,在.net4下面程序写好了部署到目的地机器时winform程序总是出现缺少运行时的问题.有时装了运行时也还是出问题,后来发现是混合模式的问题,当时 ...

  5. Ubuntu 14.04 载入 JWS 或 访问 jsp异常的解决方法

    前段时间在Ubuntu 14.04中使用 Chrome登录 Webex准备面试的时候发现无法进入在线面试.搞笑的是前一天尝试进入 Webex的时候还一切正常,不过当时Webex的在线面试没有开始.等到 ...

  6. Java框架篇---Mybatis 入门

    一.Mybatis介绍 MyBatis是一款一流的支持自定义SQL.存储过程和高级映射的持久化框架.MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果.MyBatis ...

  7. MeshCombineUtility.cs method `GetTriangleStrip' of type `UnityEngine.Mesh' could be found

    1) Assets/Standard Assets/Scripts/MeshCombineUtility.cs(27,74): error CS1061: Type `UnityEngine.Mesh ...

  8. JavaScript富应用MVC MVVM框架

    对框架的挑选 Ember.js.Backbone.js.Knockout.js.Spine.js.Batman.js , Angular.js 1. 轻量级的应用选择哪一个会比较好?2. 那一个比较简 ...

  9. Understanding apps: mobile, native or responsive

    Background Maybe you have decided to get an app built. You will not build it yourself (obviously!) s ...

  10. AssetBundle系列——共享资源打包/依赖资源打包

    有人在之前的博客中问我有关共享资源打包的代码,其实这一块很简单,就两个函数: BuildPipeline.PushAssetDependencies():依赖资源压栈: BuildPipeline.P ...