shell脚本中28个特殊字符的作用简明总结

1. #

注释作用, #! 除外
此外, 在参数替换 echo ${PATH#*:} 这里不表示注释, 数制转换, 不表示注释 echo $((2#101011))

2. ;

命令行分隔符, 可以在一行中写多个命令. echo hello; echo there

3. ;;

终止 case 选项


代码如下:

case “$variable” in
abc) echo “\$variable = abc”;;
xyz) echo “\$variable = xyz”;;
esac

4. .
隐藏文件前缀
.命令等价于source
. 表示当前目录 .. 表示上一级目录
正则表达式中作为单个字符匹配

5. “”, ‘'

双引号, 单引号, 其中双引号中可以引用变量, 而单引号中不行, 它们的作用是组织特殊字符

6. \

转义字符

7. /

文件名分隔符, 除法操作

8. ` (Esc 下边的按钮)

后置引用, 命令替换

9. :

空命令, 等价于 “NOP”
也可被认为是 shell 内建命令 true 作用相同, 例如: 死循环


代码如下:

while :
do
  echo ”1”
done

等价于:


代码如下:

while true
do
  echo “1”
done

在 if/then 语句中做占位符:


代码如下:

if condition

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

else

do other thing

fi

在一个 2 元命令中提供一个占位符.

在和 >(重定向操作符)一起使用时, 清空文件, 并没有修改文件的权限, 例如: (如果文件不存在, 将会创建文件)

: > data.log 等同于

cat /dev/null > data.log

10. !

取反操作符 != 不等于

11. *

万能匹配符, 正则表达式中
数学乘法
** 幂运算

12. ?

测试操作
正则表达式中, ? 匹配任意单个字符

13. $

变量符号
正则表达式中 行结束符
${} 参数替换
$*,$@ 位置参数
$? 退出状态
$$ 进程ID

14. ()

命令组, (a=hello; echo $a), 在 () 中的命令列表将作为一个子 shell 来运行. 在() 中的变量, 由于在子shell中, 所以对于脚本剩下的部分是不可用的.
数组初始化: array=(element1, element2, element3)

15. {xxx,yyy,zzz}

大括号扩展
cat {file1,file2,file3} > combined_file, 将file1,file2,file3合并在一起并重定向到commbined_file中. 大括号中不能有空格

16. {}

代码块. 事实上, 这个结构创建了一个匿名的函数. 但是与函数不同的是, 在其中声明的变量, 对于脚本的其他部分的代码来说还是可见的.


代码如下:

# 代码块中的内容, 外部访问, I/O重定向

1:  #!/bin/bash
   2:  
   3:  File=/etc/fstab
   4:  
   5:  # 在这个代码块中的变量, 外部也可以访问
   6:  {
   7:  read line1
   8:  read line2
   9:  } < $File
  10:  
  11:  echo "First line in $File is"
  12:  echo "$line1"
  13:  echo
  14:  echo "Second line in $File is"
  15:  echo "$line2"
  16:  
  17:  exit 0
# 将一个代码块的结果保存到文件

17. {}\;

路径名, 一般都是在 find 命令中使用, 注意; 用来结束find 命令序列的 –exec

18. []

test

数组元素, 例如 array[1]=abc
字符范围, 在正则表达式中使用

19. [[]]

test 表达式本身放在[] 里

20. (())

数学计算扩展

21. >& >>& >> <

重定向
scriptname > filename 重定向脚本的输出到文件中, 覆盖原有内容
command &> filename 重定向 stdout 和 stderr 到文件中
command >&2 重定向 stdout 和 stderr
scriptname >> filename 重定向脚本输出到文件中, 添加到文件尾端, 如果没有文件, 则创建这个文件.

22. << <<<

重定向, << 用在“here document”, <<< 用在“here string”

23. \<, \>

正则表达式中的单词边界 grep ‘\<the\>' testfile

24. |

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

25. >|

强制重定向

26.  ||

逻辑或

27. &

后台运行命令, 一个命令后边跟一个&, 将表示在后台运行


代码如下:

1:  #!/bin/bash
   2:  
   3:  for i in 1 2 3 4 5 6 7 8 9 10
   4:  do
   5:      echo -n "$i"
   6:  done&

注意, for 循环的最后一个 done&

28. &&

逻辑与

(0)

相关推荐

  • shell脚本中一些特殊符号

    在shell中常用的特殊符号罗列如下: # ; ;; . , / \\ 'string'| ! $ ${} $? $$ $* \"string\"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || &~ ~+ ~- & \\<...\\> + - %= == != # 井号 (comments) 这几乎是个满场都有的符号,除了先前已经提过的\"第一行\" #!/bin/bash 井号也常出现在一

  • Shell命令行中特殊字符与其转义详解(去除特殊含义)

    特殊符号及其转义 大家都知道在一个shell命令是由命令名和它的参数组成的, 比如 cat testfile, 其中cat是命令名, testfile是参数. shell将参数testfile传递给cat命令. 但是, 如果参数中含有特殊字符, 比如说*, *我们知道,是表示任意多个(包括0个)任意字符. 那么shell的工作方式是,它会对这些特殊字符进行预先处理, 然后再将处理的结果传给那个命令. 比如说,如果你的当前目录有file, file1, file2 三个文件, 那么当你执行cat

  • linux shell中的比较符号与特殊符号介绍

    shell字符串比较.判断是否为数字 二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别. 整数比较 -eq 等于,如:if [ "$a" -eq "$b" ] -ne 不等于,如:if [ "$a" -ne "$b" ] -gt 大于,如:if [ "$a" -gt "$b" ] -ge 大于等于,如:if [ "$a" -ge "$b"

  • shell脚本中常见的一些特殊符号和作用详解

    在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我们编写的代码更加简洁和高效,这里给大家汇总下: 1.{} 大括号: 用法一:通配符扩展 eg: ls my_{finger,toe}s 这条命令相当于如下命令的组合: ls my_fingers my_toes eg: mkdir {userA,userB,userC}-{home,bin,data} 我们将得到 userA-home, userA-bin, userA-data, userB-home, user

  • Shell中特殊字符的用法总结大全

    前言 众所周知shell既是类Unix操作系统的命令解析器,用于解释执行用户输入的一连串命令,它类似于DOS下的command和后来Windows的cmd.exe.同时shell也是一种程序设计语言.作为命令解释型的脚本语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令:作为程序设计语言,它预定义了各种环境变量,保留了一些关键字以及一些特殊字符的含义,并提供了许多在高级语言中才具有的控制结构,包括循环和分支判断. 本文将给大家介绍关于Shell特殊字符用法的相关内

  • shell中冒号的特殊用法分享

    : ${VAR:=DEFAULT} 当变量VAR没有声明或者为NULL时,将VAR设置为默认值DEFAULT.如果不在前面加上:命令,那么就会把${VAR:=DEFAULT}本身当做一个命令来执行,报错是肯定的.

  • Shell脚本中的位置变量参数(特殊字符)实例讲解

    $# : 传递到脚本的参数个数 $* : 以一个单字符串显示所有向脚本传递的参数.与位置变量不同,此选项参数可超过 9个 $$ : 脚本运行的当前进程 ID号 $! : 后台运行的最后一个进程的进程 ID号 $@ : 与$#相同,但是使用时加引号,并在引号中返回每个参数 $- : 显示shell使用的当前选项,与 set命令功能相同 $? : 显示最后命令的退出状态. 0表示没有错误,其他任何值表明有错误. 复制代码 代码如下: #!/bin/sh #param.sh # $0:文件完整路径名

  • Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)

    在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法,这些符号用好了可以达到事半功倍的效果:但另一方面要避免这些特殊符号的过度使用而导致脚本难以调试.难以阅读. 这些特殊符号罗列出来大致如下: 复制代码 代码如下: # ; ;; . , / / 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `command`{} [] [[]] () (()) || &~ ~

  • Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍

    Shell中的特殊字符有 1.$ 美元符 2.\ 反斜杠 3.` 反引号 4." 双引号 5.< ,>;,*,?,[,] 下面我一一举列说明 一.$符号 1.echo $? 显示的是上一条指令退出状态 2.echo "$?" 效果同上 3.echo '$?' 显示的是$? 4.echo \$? 显示的是$? 5.echo "\$?" 显示的是$? 大家可能已经看出 $符号在双引号中具有特殊意义 双引号对$符号不起作用 而单引号可以将特殊字符的的

  • shell脚本中28个特殊字符的作用简明总结

    1. # 注释作用, #! 除外此外, 在参数替换 echo ${PATH#*:} 这里不表示注释, 数制转换, 不表示注释 echo $((2#101011)) 2. ; 命令行分隔符, 可以在一行中写多个命令. echo hello; echo there 3. ;; 终止 case 选项 复制代码 代码如下: case "$variable" inabc) echo "\$variable = abc";;xyz) echo "\$variable

  • 在linux shell脚本中root切换到普通用户执行脚本或命令的方法

    需求: 安装deb包,设置程序安装后启动,不需要root权限启动程序 | 不能用root权限启动 其他开机启动选项 方法:root临时降低权限 secUser=`who am i | awk '{print $1}'` #echo $secUser su $secUser -c <指令> > /dev/null 2>&1 & #这一条命令的执行权限是临时的,只在本条语句起作用 id -u # 结果为0,还是root用户权限 附: su --help -c, --co

  • Python设置在shell脚本中自动补全功能的方法

    本篇博客将会简短的介绍,如何在ubuntu中设置python自动补全功能. 需求:由于python中的内建函数较多,我们在百纳乘时,可能记不清函数的名字,同时自动补全功能,加快了我们开发的效率. 方法以及要求:设置过程中需要看客具备一点ubuntu的基本知识,当然不懂也没有关系,跟着一步一步走,不懂得可以学习一下ubuntu的文件系统. 具体步骤 1.首先创建一个文件:~/.pythonrc 在ubuntu中创建文件的命令为: sudo gedit ~/.pythonrc #sudo表示使用管理

  • Shell脚本中多命令逻辑执行顺序的方法详解

    Linux中可以使用分号";".双and号"&&"和双竖线"||"来连接多个命令.单"&"符号也算命令连接符号,只不过它是将其前面的命令放入后台执行,所以可以变相地实现命令并行执行. 1.分号";" command1 ; command2 命令之间没有逻辑关系.分号连接的命令会按照顺序从前向后依次执行,但分号两端的命令之间没有任何逻辑关系,所有写出来的命令最终都会被执行,即使分号前面

  • shell脚本中$符号的命令使用汇总

    今天是远程办公的第4天,渐渐的找到了一点在家办公的节奏了,改了几个shell脚本,在改动过程中,发现还有一些知识点需要巩固,这里写出来,加深下印象. 关于$符号,大家肯定都不陌生,在shell脚本中,$的作用还是比较大多的,这里将所有的$组合都列出来,大家可以看下效果. $组成的命令大概有下面几个: $0,$1...$?,$!,$$,$*,$#,$@ 下面分别看看这些意思是什么: 1.$0,$1 $0和$1比较好理解,他们的意思,分别是脚本名称和脚本的第一个参数,我们举个例子来看: jwfyyz

  • 如何利用 tee 命令调试shell脚本中的管道

    目录 实例 执行脚本 问题 原因 验证 总结 实例 下面是一个简单的脚本,脚本中 processid 函数的作用是查询指定进程名字的进程ID,在管理linux服务器的过程中,这个是很常见的功能,processid 函数作用是利用多层管道命令查询进程ID,以下是测试脚本源码 #!/bin/sh processid() { ipid=$(ps -ef | grep -w $1 | grep -v grep | awk '{print $2}') echo $ipid } case "$1"

  • Shell脚本中if条件判断的写法实例

    目录 前言 条件判断格式 if 语句 条件判断类型 按照文件权限进行判断 文件之间比较 整数之间比较 字符串的判断 多重条件判断 附:Shell if 判断语句参数 总结 前言 if…else… 可以说是我们在编程中最常见的条件判断语句了,那么在 Shell 中如何使用呢?如何判断两个数值相等?如何判断一个文件是否存在?跟随这篇文章,一起来学习吧! 条件判断格式 在 Shell 中有两种判断格式,分别如下: # 1. 第一种 test  条件判断式 # 2. 第二种,注意括号两端必须有空格 [

  • 详解Shell脚本中^M的问题和解决方案

    目录 ^M 是什么? 本质原因 常用工具 在开发过程中,有时候不小心将Windows本地创建的shell脚本(以 .sh 结尾的脚本),传到linux系统中,通过 vi或者view命令查看文件时,发现在末尾发现出现了很多^M字符. ^M 是什么? 这个字符就是换行符.是由于跨平台解析的原因.因为window和Linux下对行尾的换行的定义不同Windows: \r\nLinux/Unix: \nMac: \r 例子 出现的原因:在DOS/Windows里,文本文件的换行符为\r\n,而在nix系

  • Shell脚本中执行sql语句操作mysql的5种方法

    对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语句的几种方法,供大家参考.对于脚本输出的结果美化,需要进一步完善和调整.以下为具体的示例及其方法. 1.将SQL语句直接嵌入到shell脚本文件中 复制代码 代码如下: --演示环境  [root@SZDB ~]# more /etc/issue  CentOS release 5.9 (Final)  Kernel \r on an \

  • shell脚本中echo显示内容带颜色的实现方法

    shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e 格式如下: 复制代码 代码如下: echo -e "\033[字背景颜色:文字颜色m字符串\033[0m" 例如: 复制代码 代码如下: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 36的位置是代表字的颜色 注: 1.字背景颜色和文字颜色之间是英文的"" 2.文字颜色后面有个m 3.字符串前后可

随机推荐