# 表示注释

  #! 指定当前脚本的解析器

 #!/bin/bash

 echo "Hello World"

  ; 命令分隔符

 #!/bin/bash

 echo hello;echo there

 filename=ttt.sh

 if [ -r "$filename" ]; then

  echo "File $filename exists."; cp $filename $filename.bak

 else

  echo "File $filename not found."; touch $filename

 fi; echo "File test complete"

  ;; 终止case选项 

 #!/bin/bash

 varname=b

 case "$varbname" in

  [a-z]) echo "abc";;

  [0-9]) echo "123";;

 esac

  .  等价与source命令。source命令用于在当前bash环境下读取并执行filename.sh中的命令

 $ source test.sh #等价于  . test.sh

  "   String将会阻止解释Stirign中大部分特殊字符

  '   String将会阻止String中所有特殊字符的解释,比"更强烈的方式

  /   文件名路径分隔符,也可用作除法算术操作符

  \   一种单单字符的引用机制,\X会转义成字符X

  `   命令替换 command结构可以将命令的输出赋值到另一个变量中去。``会优先执行
 $  cp `mkdir bak` test.sh bak  #先创建bak目录,然后复制test.sh到bak中去

  :空命令,相当于NOP(no option)。也被认为与shell的内建命令true作用相同。:是一个bash的内建命令,它的退出码是0

 #!/bin/bash

 while :

 do

  echo "endless loop"

 done

 #!/bin/bash

 condition=5

 if [ $condition -gt 0 ]

 then : #什么都不做,退出分支

 else

  echo "$condition"

 fi

  :在与重定向操作符>结合使用时,将会把一个文件清空,但不会修改这个文件的权限。若之前的文件不存在,就创建这个文件。

 $ : > test.sh #test.sh被清空了

  :在与重定向操作符>>结合使用时,将不会对预先存在的目标文件产生任何影响,若这个文件之前不存在,则创建这个文件。

  :还可以用来注释行当不会关闭错误检查,也可用来在/ect/passwd和$PATH变量中做分隔符。

  ? 在一个双括号结构中,?就是C语言的三元操作符

 #!/bin/bash

 a=10

 (( t=a<50?8:9 ))

 echo $t

  $变量替换、命令替换

 $ cd  $(echo Documents)

 $ pwd

  (())命令组:在括号中的命令列表,将会作为一个子shell来运行。在括号中的变量,由于是在子shell中所以对脚本剩下的部分是不可用的。父进程,也就是脚本本身,不能够读取在子进程中创建的变量,也就是在shell中创建的变量。

 #!/bin/bash

 a = 123

 ( a = 321; )  #括号中的变量a相当于一个局部变量

 echo "a = $a"

 bash test.sh  #output a = 123

  (())还可以初始化数组

 #!/bin/bash

 arr=(1 2 3 4 5 6) #不可以出现空格哦~ arr = ..是不行的哦

 echo ${arr[3]}

  {}文件名扩展

 #!/bin/bash

 if [ ! -w 't.txt' ];

 then

  touch t.txt

 fi

 echo 'test txt' >> t.txt

 cp t.{txt,back}

  {{}}也可代表代码快,又被称为内部组,实际上是一个匿名函数。

 #!/bin/bash

 a=123

 { a=321; }  #中间一定要有空格哦~

 echo "a = $a"

 $ bash test.sh #output a = 321 #在{}中声明的变量,对于脚本其它部分的代码来说是可见的

  []条件测试,[是shell内建test命令的一部分,并不是/urs/bin/test中的外部命令的一个链接

 #!/bin/bash

 a=5

 if [ $a -lt 10 ]

 then

  echo " a : $a "

 else

  echo "a > 10"

 fi

  []数组元素,在一个array结构的上下文中,中括号用来引用数组中的每个元素的编号。

 #!/bin/bash

 arr=(12 22 32)

 arr[0]=2 

 echo ${arr[0]}

  <>重定向

 test.sh > filename #重定向test.sh的输出到文件filename中。若filename存在的话,那么将会被覆盖

 test.sh &> filename  #重定向test.sh的stdout和stderr到filename中

 test.sh >&2 #重定向test.sh的stdout到stderr中

 test.sh >> filename #把test.sh的输出追加到文件filename中。若filename不存在的话,将会被创建

  | 管道,分析前边命令的输出,并将输出作为后边命令的输入。

 $ ps -ef | aux tomcat

  -选项,前缀,在所有的命令若想使用参数,前面都要加上-

 #!/bin/bash

 a=5 

 b=5

 if [ "$a" -eq "$b" ]

 then

  echo " a is equal to b"

 fi

  -用于重定向stdin或stdou

 备份最后24小时当前目录下所有修改的文件

 #!/bin/bash

 BACKUPFILE=backup-$(date +%m-%d-%Y) #在备份文件中插入时间

 archive=${1:-$BACKUPFILE}

 tar cvf - `find . -mtime -1 -type f -print` > $archive.tar

 gzip $archive.tar

 echo "Directory $PWD backed up in archive file \"$archive.tar.gz\"."

 exit 0

  ~表示home目录

 

  

Bash中的特殊字符的更多相关文章

  1. (转载)Bash 中的特殊字符大全

    转自:https://linux.cn/article-5657-1.html Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是she ...

  2. Bash 中的特殊字符大全【转】

    Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好 ...

  3. sed中使用变量及变量中存在特殊字符‘/’处理

    sed中使用变量,普通的处理方式无法解析变量 如当前file文件中存在字符串pedis,现将其替换为redis [root@localhost work]# cat file pedis 如下两种替换 ...

  4. Shell中的特殊字符(三)

    一 通配符 [root@192 test]# touch abc [root@192 test]# touch abcd [root@192 test]# touch 012 [root@192 te ...

  5. Bash 中的 $0 在什么时候不是 argv[0]

    每个 C 程序都有一个 main 函数,每个 main 函数都有一个 argv 参数,这个参数是一个字符串数组,这个数组的值是由该 C 程序的父进程在通过 exec* 函数启动它时指定的. 很多人说 ...

  6. URL中的特殊字符

    原网址:http://pichcar.iteye.com/blog/676292 URL中的特殊字符 有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了.编 ...

  7. Bash中的任务(job)管理

    本来不准备写这篇博客的,因为任务管理(job管理)非常非常常用,以至于觉得根本没有必要去写这样一个东西.但想了下,还是记录一下吧,也许有人会用到呢. 不知你是否碰到过这样的情况,当你兴致勃勃的打开VI ...

  8. bash中不可以用字符串做数组下标

    bash中可以用字符串做数组下标吗例如 test["abc"]=1------解决方案-------------------- 好像是误会,是awk里可以,bash shell里不 ...

  9. JS 正则表达式中的特殊字符

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

随机推荐

  1. MASM6.15汇编程序例子

    /***************通过调用(INT 21H)表中的01h号功能号从键盘输入一个字符并回显到视频显示器上*****************/ DATAS SEGMENT ;此处输入数据段代 ...

  2. [译]Quartz 框架 教程(中文版)2.2.x 之第一课 开始使用Quartz框架

    第一课:开始使用Quartz框架 在你使用调度器之前,需要借助一些具体的例子去理解(谁愿意只是猜啊?).你可以使用SchedulerFactory类来达到程序调度的目的.有一些Quartz框架的用户可 ...

  3. 使用JQuery的Ajax调用SOAP-XML Web Services(Call SOAP-XML Web Services With jQuery Ajax)(译+摘录)

    假设有一个基于.Net的Web Service,其名称为SaveProduct POST /ProductService.asmx HTTP/1.1 Host: localhost Content-T ...

  4. JDE报表开发笔记(R5537011 收货校验统计表)

    业务场景:根据批次收货,收货后对该批次产品进行检验,记录检验结果生成统计表. 涉及表:主表F37011,业务从表F43121/F4101/F4108 ------------------------- ...

  5. [转]无IDE时编译和运行Java

    本文由 ImportNew - Grey 翻译自 dzone.欢迎加入Java小组.转载请参见文章末尾的要求. 最近 Java subreddit 出现了一篇”在没有IDE的情况下编译Java包” 的 ...

  6. [转]C#取得内网IP、外网IP、客户端IP方法

    前言 在 Windows Form Application 里对于取得 IP Address 有内网.外网两种 IP Address ,如果只需要取得内网 IP Address ,可以透过使用 IPH ...

  7. ext DateTime.js在ie下显示不全

    问题: ext在使用DateTime.js的时候会出现在日期控件在ie下显示不完成.如图  少了底部的“今天按钮”. 解决方法: 在ext/ux/form/DateTime.js (我的是这个路径,根 ...

  8. double int char 数据类型

    贴心的limits... 测试代码: #include <iostream> #include <stdio.h> #include <limits> #inclu ...

  9. HDU 1542 线段树+扫描线+离散化

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  10. 内工大acm校赛--整理代码

    题目:小明搜到一行无缩进无换行代码,请帮小明整理代码.无for语句和case语句,而且只有一个主函数.你只要控制注意“:”“{”“}”这三个符号带来的缩进和换行效果就行. Input: 输入只有一行, ...