shell脚本的各种符号比较繁杂,尤其是通配符,和$符号。还有各种括号,运算符的应用,混在一起难以记忆。通过学习shell脚本语言,以及查找资料,总结shell脚本中的常见特殊符号,并分门别类,有助于理解和记忆。

目录

一、shell变量类

1、$ 和 {}

2、$() 和单引号

3、命令相关

二、shell字符串变量相关

1、单引号' '

2、双引号" "

3、获取字符串长度

 4、变量扩展

(1)、字符表示

(2)、变量扩展

三、shell运算符和表达式类

1、算术运算符

2、关系运算符

3、布尔运算符

4、逻辑运算符

5、字符串运算符

四、shell运行中传递参数相关

五、输入输出重定向符号

​编辑



主要参考网页链接:

1、Shell 教程 | 菜鸟教程

2、shell脚本中常见的一些特殊符号和作用详解-阿里云开发者社区 

3、Linux shell 单引号和双引号 - 编程猎人 

一、shell变量类

1、$ 和 {}

var="hello world" # ​变量名和等号之间不能有空格
echo $var
echo "${var}shell" # 使用大括号避免识别成 $varshell

​

2、$() 和单引号

 作用: 命令替换(command substitution),都是返回当前执行命令的结果

# 使用语句给变量赋值
for file in `ls /etc`

for file in $(ls /etc)

3、命令相关


|     # 管道符号。# 解释:command1|command2,将command1的输出作为command2的输入,

# 示例
ls -al|less
# 将ls -al的输出作为less的输入,即将la -al的输出分页。管道命令只接受标准输入(standoutput)。


 
&        # 后台进程符。
``       # 反单引号,表示它所包含的内容。一般作为嵌入的命令使用,此命令将先执行。
;        # 命令分隔符。
()       # 表示整体执行命令。

二、shell字符串变量相关

1、单引号' '

(1)单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
(2)单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用

2、双引号" "

(1) 双引号里可以有变量和转义字符

your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1

# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2  $greeting_3

hello, runoob ! hello, runoob !
hello, runoob ! hello, ${your_name} !

参考:Shell 变量 | 菜鸟教程 

3、获取字符串长度

string="abcdf"
echo ${#string}

 4、变量扩展

(1)、字符表示

#  # 注释符;
*  # 代表0个或者多个特殊字符
? # 匹配任意一个字符。
.  # 点该表任意字符串


^     # 反向选择符,
[x-y] # 表示一定的范围。

# 示例
grep -n '^[^a-zA-Z]' wokao.txt
# []内的叫反向选择符,[]外的则表示定位在行首。查找行首不是英文字母的行。


” ”  # 双引号表示把它所包含的内容作为普通字符,但` ` $ \ ‘ ‘ 几个符号除外。
’ ’  # 单引号表示把它所包含的内容作为普通的字符,无特殊例外。

$    # 变量符,提取变量,如echo $HOME,查看变量;正则表达式中表示行首。
\    # 转义字符,就是将特殊字符转换成其本来的普通字符的意思。

(2)、变量扩展

参考:shell脚本中常见的一些特殊符号和作用详解-阿里云开发者社区

# name为变量名,word为要匹配的字符串
${name:-default} # 使用一个默认值(一般是空值)来代替那些空的或者没有赋值的变量name;
${name:=default} # 使用指定值来代替空的或者没有赋值的变量name;
${name:?message} # 如果变量为空或者未赋值,那么就会显示出错误信息并中止脚本的执行同时返回退出码1。
${name%word}     # 从name的尾部开始删除与word匹配的最小部分,然后返回剩余部分
${name%%word}    # 从name的尾部开始删除与word匹配的最长部分,然后返回剩余部分
${name#word}     # 从name的头部开始删除与word匹配的最小部分,然后返回剩余部分
${name##word}    # 从name的头部开始删除与word匹配的最长部分,然后返回剩余部分

三、shell运算符和表达式类

1、算术运算符

2、关系运算符

3、布尔运算符

4、逻辑运算符

5、字符串运算符

四、shell运行中传递参数相关

  脚本内获取参数的格式为:$nn 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……其中 $0 为执行的文件名(包含文件路径)

五、输入输出重定向符号

重定向:I/O。Linux Shell 环境中支持输入输出重定向,用符号 < 和 > 来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出,比如

>      # 重定向输出符号。
>>     # 重定向输出符号,但有追加的功能。
2>     # 错误重定向输出符号,覆盖原文件内容。
2>>    # 错误重定向输出符号,有文件内容追加的功能。


# 示例
2>a.txt     # 表示将错误信息输出到文件a.txt中。


<   #重定向输入符。

具体使用情况如下表:

Logo

更多推荐