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. XCode使用自带SVN,SVN命令

    转载http://blog.sina.com.cn/s/blog_68661bd80101phpy.html 这两天响应老板要求,把所有代码放到公司的SVN服务器上,按照我的想法肯定是就苹果组建一个服 ...

  2. PowerShell 启动应用程序【转】

    当你在PowerShell中,启动带参数启动可执行应用程序时,可能会碰到参数解析的错误.最好的方式是使用命令 Start-Process,该命令有两个优点: 程序的路径和程序参数分开,可以使用-Fil ...

  3. SNF开发平台WinForm之十三-单独从服务器上获取PDF文件进行显示-SNF快速开发平台3.3-Spring.Net.Framework

    1运行效果: 2开发实现: 如果需要单独显示PDF文件时用下面代码去实现,指定url地址. 地址: . 获取附件管理的实体对象: List<KeyValuePair<string, obj ...

  4. ubuntu remove mysql

    ubuntu 彻底删除 mysql 然后重装 mysql 删除 mysql sudo apt-get autoremove --purge mysql-server-5.0sudo apt-get r ...

  5. 认识SuperSocket 1.6.4

    SuperSocket 是一个轻量级的可扩展的 Socket 开发框架,由江振宇先生开发,之所以选用它是因为一下几点恰好复合项目需求: 开源,基于Apache 2.0协议,可以免费使用到商业项目. 高 ...

  6. JavaScript 中介者模式与观察者模式有何不同?

    http://addyosmani.com/resources/essentialjsdesignpatterns/book/#detailmvp 感觉二者非常像,都是pub/sub机制,如何进行区分 ...

  7. C++ async task

    最近在搞Android 开发,里面多线程的使用比较频繁,java多线程接口很方便. Thread, AysncTask, Handler 这些接口比起posix提供的pthread_create()等 ...

  8. Configuring Service Broker for Asynchronous Processing

    Configuring Service Broker for Asynchronous Processing --create a database and enable the database f ...

  9. 在SQL Server里如何进行页级别的恢复

    在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作.假设在SQL Server里你有一个损坏的页,你要从最近的数据库备份只还原有问题的页,而不是还原 ...

  10. 关于python中赋值、浅拷贝、深拷贝之间区别的深入分析

    当重新学习了计算机基础课程<数据结构和算法分析>后再来看这篇自己以前写的博文,发现错误百出.python内置数据类型之所以会有这些特性,归根结底是它采用的是传递内存地址的方式,而不是传递真 ...