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. npoi与memcached中的ICSharpCode.SharpZipLib版本冲突的解决方案

    项目中一直使用NPOI与memcached,一直相安无事,但是最近升级了npoi到最新版本,发生了ICSharpCode.SharpZipLib的版本冲突问题. 因为此前一直使用的是NPOI的1.x的 ...

  2. Cubieboard2裸机开发之(四)定时器操作

    前言 在Cubieboard2裸机开发之(三)里用到了一个延时函数delay,它的延时时间是不精确的,因此为了能够精确延时,就需要定时器的配合.定时器可以精确延时的一个重要原因是它的计时时钟(或者说频 ...

  3. POJ 1650 Integer Approximation

    Integer Approximation Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5081   Accepted:  ...

  4. thinkphp 3.2.3+Admin LTE后台框架

  5. 关于app.config不能即时保存读取的解决方案

    public void saveValue(string Name, string Value) { ConfigurationManager.AppSettings.Set(Name, Value) ...

  6. 配置<authorization>节(配置文件)

    在 Web.config 文件的<configuration>标记的子标记<authorization>和</authorization>之间用于设置应用程序的授权 ...

  7. MyBatis知多少(7)持久层

    持久层是适合使用MyBatis的地方.在面向对象的系统中,持久层主要关注对象(或者更精确地说应该是存储在那些对象中的数据)的存取.在企业应用程序中持久层通常用关系数据库系统来存储数据,虽然某些情况下其 ...

  8. Elasticsearch及java客户端jest使用

    本文使用Github中的Elasticsearch-rtf,已经集成了众多的插件,例如必须使用的中文分词等,可以简单的通过配置来启用中文分词.本文主要分为以下几部分: 1.配置和启用中文分词: 2.定 ...

  9. CentOS6部署VNC服务端

    VNC (Virtual Network Computer)是虚拟网络计算机的缩写.VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Wi ...

  10. Angular开发Tips

    1.在使用$routeProvider的时候,需要让模块依赖ngRoute,否则会提示找不到服务,示例: angular.module('module1', ['ngRoute']) .config( ...