shell高级编程(2)——特殊字符
2017-09-20 11:13
447 查看
#
注释行首以#开头为注释(#!是个例外).
表示注释
在引号中间和#等表示#本身
echo ${PATH#*:} # 参数替换,不是一个注释
echo $(( 2#101011 )) # 数制转换,不是一个注释
;
命令分隔符,可以用来在一行中来写多个命令.
命令分隔,在一行中写多个命令 echo “aa” ; echo “bb”
在条件中的if和then如果放在同一行,也用;分隔
;;
终止”case”选项
.
命令:source
文件名的前缀,隐藏文件
目录:.当前目录,..父目录
正则表达式:匹配任意单个字符
”
“STRING”将会阻止(解释)STRING中大部分特殊的字符
’
全引用. ‘STRING’ 阻止了全部特殊字符
,
逗号链接了一系列的算术操作,虽然里边所有的内容都被运行了,但只有最后一项被 返回.
\
转义字符,如\X 等价于”X”或’X
/
文件名路径分隔符.或用来做除法操作
`
后置引用,命令替换
:
空命令
还用来在/etc/passwd 和$PATH 变量中用来做分隔符
!
取反操作符
*
通配符
数学乘法
** 是幂运算
?
测试操作
(())结构可以用来做数学计算或者是写 c 代码,那?就是 c 语言的 3 元操作符的 一个
在正则表达式中一样匹配任意的单个字符
$
变量替换
在正则表达式中作为行结束符
${}
参数替换
$* #@
位置参数
$?
退出状态变量.$?保存一个命令/一个函数或者脚本本身的退出状态
$$
进程 ID 变量.这个$$变量保存运行脚本进程 ID
()
命令组
{}
大括号扩展
代码块
[]
test
数组元素
字符范围
[[]]
test
(())
数学运算符的扩展
> >> >& &> <
重定向
scriptname >filename 重定向脚本的输出到文件中.覆盖文件原有内容.
command &>filename 重定向 stdout 和 stderr 到文件中
command >&2 重定向 command 的 stdout 到 stderr
scriptname >>filename 重定向脚本的输出到文件中.添加到文件尾端,如果没有文件, 则创建这个文件.
<<
用在here document
<<<
重定向,用在”here string”
<, >
ASCII 比较
\<, >
正则表达式中的单词边界
|
管道.分析前边命令的输出,并将输出作为后边命令的输入
>|
强制重定向
||
或-逻辑操作
&
后台运行命令
-
之前工作的目录 cd -
算术减号
用于重定向 stdin 或 stdout
tar -cvf - /home | tar -xvf -tdout
tar -cvf - /home 将home打包到stdout(-)
| 管道,即前一命令的输出为后一命令输入
tar -xvf - 从stdin(-)解包
=
算术等号
+
算术加号,也用在正则表达式中
选项,对于特定的命令来说使用”+”来打开特定的选项,用”-“来关闭特定的选项
%
算术取模运算.也用在正则表达式中
~
home 目录.相当于$HOME 变量
~+
当前工作目录,相当于$PWD 变量
~-
之前的工作目录,相当于$OLDPWD 内部变量
^
行首,正则表达式中表示行首.”^”定位到行首
注释行首以#开头为注释(#!是个例外).
表示注释
在引号中间和#等表示#本身
echo ${PATH#*:} # 参数替换,不是一个注释
echo $(( 2#101011 )) # 数制转换,不是一个注释
;
命令分隔符,可以用来在一行中来写多个命令.
命令分隔,在一行中写多个命令 echo “aa” ; echo “bb”
在条件中的if和then如果放在同一行,也用;分隔
;;
终止”case”选项
.
命令:source
文件名的前缀,隐藏文件
目录:.当前目录,..父目录
正则表达式:匹配任意单个字符
”
“STRING”将会阻止(解释)STRING中大部分特殊的字符
’
全引用. ‘STRING’ 阻止了全部特殊字符
,
逗号链接了一系列的算术操作,虽然里边所有的内容都被运行了,但只有最后一项被 返回.
\
转义字符,如\X 等价于”X”或’X
/
文件名路径分隔符.或用来做除法操作
`
后置引用,命令替换
:
空命令
还用来在/etc/passwd 和$PATH 变量中用来做分隔符
!
取反操作符
*
通配符
数学乘法
** 是幂运算
?
测试操作
(())结构可以用来做数学计算或者是写 c 代码,那?就是 c 语言的 3 元操作符的 一个
在正则表达式中一样匹配任意的单个字符
$
变量替换
在正则表达式中作为行结束符
${}
参数替换
$* #@
位置参数
$?
退出状态变量.$?保存一个命令/一个函数或者脚本本身的退出状态
$$
进程 ID 变量.这个$$变量保存运行脚本进程 ID
()
命令组
{}
大括号扩展
代码块
#!/bin/bash # 从 /etc/fstab 中读行 File=/etc/fstab { read line1 read line2 } < $File echo "First line in $File is:" echo "$line1" echo echo "Second line in $File is:" echo "$line2" exit 0
#!/bin/bash # rpm-check.sh # 这个脚本的目的是为了描述,列表,和确定是否可以安装一个 rpm 包. # 在一个文件中保存输出. # # 这个脚本使用一个代码块来展示 8 SUCCESS=0 E_NOARGS=65 if [ -z "$1" ] then echo "Usage: `basename $0` rpm-file" exit $E_NOARGS fi { echo echo "Archive Description:" rpm -qpi $1 # 查询说明 echo echo "Archive Listing:" rpm -qpl $1 # 查询列表 echo rpm -i --test $1 # 查询 rpm 包是否可以被安装 if [ "$?" -eq $SUCCESS ] then echo "$1 can be installed." else echo "$1 cannot be installed." fi echo } > "$1.test" # 把代码块中的所有输出都重定向到文件中 echo "Results of rpm test in file $1.test" # 查看rpm的man页来查看rpm的选项 exit 0
[]
test
数组元素
字符范围
Array[1]=slot_1 echo ${Array[1]}
[[]]
test
(())
数学运算符的扩展
> >> >& &> <
重定向
scriptname >filename 重定向脚本的输出到文件中.覆盖文件原有内容.
command &>filename 重定向 stdout 和 stderr 到文件中
command >&2 重定向 command 的 stdout 到 stderr
scriptname >>filename 重定向脚本的输出到文件中.添加到文件尾端,如果没有文件, 则创建这个文件.
<<
用在here document
<<<
重定向,用在”here string”
<, >
ASCII 比较
\<, >
正则表达式中的单词边界
|
管道.分析前边命令的输出,并将输出作为后边命令的输入
>|
强制重定向
||
或-逻辑操作
&
后台运行命令
#!/bin/bash #background-loop.sh for i in 1,2,3,4,5,6,7,8,9,10 do echo -n "$i" done& echo "finish 1-10" for i in 11,12,13,14,15,16,17,18,19,20 do echo -n "$i" done echo "finish 11-20" exit #-------------------------------------------------------- #期望的输出应该是 #1 2 3 4 5 6 7 8 9 10 #11 12 13 14 15 16 17 18 19 20 #然而实际的结果有可能是 #11 12 13 14 15 16 17 18 19 20 #1 2 3 4 5 6 7 8 9 10 bozo $ #(第 2 个'echo'没执行,为什么?) #也可能是 #1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #(第 1 个'echo'没执行,为什么?) #非常少见的执行结果,也有可能是: #11 12 13 1 2 3 4 5 6 7 8 9 10 14 15 16 17 18 19 20 #前台的循环先于后台的执行
-
之前工作的目录 cd -
算术减号
用于重定向 stdin 或 stdout
tar -cvf - /home | tar -xvf -tdout
tar -cvf - /home 将home打包到stdout(-)
| 管道,即前一命令的输出为后一命令输入
tar -xvf - 从stdin(-)解包
#!/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 目录.相当于$HOME 变量
~+
当前工作目录,相当于$PWD 变量
~-
之前的工作目录,相当于$OLDPWD 内部变量
^
行首,正则表达式中表示行首.”^”定位到行首
相关文章推荐
- 高级Bash脚本编程指南(2):Shell特殊字符
- Shell编程之特殊字符
- Linux Shell编程(5)——shell特殊字符(下)
- Linux Shell编程(4)——shell特殊字符(上)
- Linux Shell编程(5)——shell特殊字符(下)
- Linux Shell编程(4)——shell特殊字符(上)
- shell脚本编程-特殊字符
- shell 编程中的特殊字符的处理
- linux-shell高级编程-操作变量串
- Linux CentOS 7 shell中的特殊字符及与管道相关的命令(cut,sort,wc,uniq,tee,tr,split)
- Linux Shell编程四:高级shell脚本
- Shell脚本的基本语法(二) 预定义特殊字符、case语句和函数调用
- Shell-bash中特殊字符汇总[转]
- UNIX环境高级编程学习之第六章系统数据文件和信息-修改第四章实现的Shell的“ls -l”功能
- 关于shell对特殊字符的处理
- shell 特殊字符
- ubuntu_shell-特殊字符
- shell中的特殊字符
- Shell 编程9(高级变量)
- shell中的特殊字符