shell-特殊符号

在Shell中,有几个符号有着特别的含义,分别是#符号、分号、引号、斜线与反斜线、反引号、冒号、问号、美元符号,小括号,大括号,中括号,尖括号,竖线,破折号,波浪号等,下面详细看看这几个特殊字符的作用。

一、#符号

行首以 # 开头(除#!之外)的是注释。#!是用于指定当前脚本的解释器,比如:#! /bin/bash,就是制定解释器为bash.

二、分号(;)

分号有两个作用,如下:

1、命令分隔符

使用分号(;)可以在同一行上写两个或两个以上的命令。

2、终止判断

使用双分号(;;)可以终止case选项。

三、引号

引号有单引号和双引号,作用如下:

双引号: “STRING” 将会阻止(解释)STRING中大部分特殊的字符
单引号: ‘STRING’将会阻止STRING中所有特殊字符的解释,这是一种比使用”更强烈的形式。后面的实验会详细说明。

四、斜线和反斜线

1.斜线(/)

文件名路径分隔符。分隔文件名不同的部分(如/home/bozo/projects/Makefile)。也可以用来作为除法算术操作符。

2.反斜线(\)

一种对单字符的引用机制。\X 将会“转义”字符X。这等价于”X”,也等价于’X’。\ 通常用来转义双引号(”)和单引号(’),这样双引号和单引号就不会被解释成特殊含义了。

五、反引号(`)

反引号中的命令会优先执行。比如用cut获取最后一个字符串最后一个字符

str='shell learn'
echo -n $str|cut -c `echo -n $str|wc -c`

六、冒号(:)

1、 空命令

等价于“NOP”(no op,一个什么也不干的命令)。也可以被认为与shell的内建命令true作用相同。“:”命令是一个bash的内建命令,它的退出码(exit status)是(0)。

while :
do 
   something
done
2、变量扩展/子串替换

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

: > test.sh   # 文件“test.sh”现在被清空了
# 与 cat /dev/null > test.sh 的作用相同
# 然而,这并不会产生一个新的进程, 因为“:”是一个内建命令

在与>>重定向操作符结合使用时,将不会对预先存在的目标文件(: >> target_file)产生任何影响。如果这个文件之前并不存在,那么就创建它。

也可能用来作为注释行,但不推荐这么做。使用 # 来注释的话,将关闭剩余行的错误检查,所以可以在注释行中写任何东西。然而,使用 : 的话将不会这样

3、环境变量做分隔符

七、问号(?)

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

((x=5<10?1:0))
echo $x

八、美元符号($)

1.变量替换

比如:

a=5
echo $a
2、命令替换(同反引号)

比如:

cd $(echo mypath)

其他作用:

  • s#传递到脚本的参数个数
  • $*以一个单字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可超过9个
  • $$脚本运行的当前进程ID号
  • $!后台运行的最后一个进程的进程ID号
  • $@与$#相同,但是使用时加引号,并在引号中返回每个参数
  • $-显示shell使用的当前选项,与set命令功能相同
  • $?显示最后命令的退出状态。0表示没有错误,其它任何值表明有错误

九、小括号(())

1、命令组

在括号中的命令列表,将会作为一个子 shell 来运行,相当于一个局部变量,除了括号就没了。对变量的修改无效。

str="wo shi diaosi"
(str="wo shi gaofushuai")
echo $str    #wo shi diaosi
2、初始化数组
arr={1 2 3 4 5}
echo $arr #1 2 3 4 5

十、大括号({})

1、文件名扩展
cp test.{c,cpp} 
#上面这句与cp test.c test.cpp是等价的
2、代码块

代码块,又被称为内部组,这个结构事实上创建了一个匿名函数(一个没有名字的函数)。然而,与“标准”函数不同的是,在其中声明的变量,对于脚本其他部分的代码来说还是可见的。就是修改有效。

十一、中括号

1、条件测试

条件测试表达式放在[ ]中。

wo="diaosi"
if [$wo eq "gaofushuai"]
then 
   echo "hao yan guang"
else
   echo "oh ,no"
fi
2、取数组元素
arr=(1,2,3,4,5)
echo $arr[2]

十二、尖括号(<和>)

重定向

十三、竖线(|)

分析前边命令的输出,并将输出作为后边命令的输入。这是一种产生命令链的好方法。

十四、波折号

1、命令选项参数前缀

在所有的命令内如果想使用选项参数的话,前边都要加上“-”。

2、用于重定向stdin或stdout

十五、波浪号(~)

当前目录。

参考资料:实验楼

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值