shell脚本

Shell脚本是Linux开发工作中常用的工具,但是我一直没有找到一个适合自己的简明扼要的HandBook。在工作过程中整理了一下,贴在这里已备查看。

1 Shell中的特殊符号

1.1 $ 美元符号。用来表示变量的值。如变量NAME的值为Mike,则使用$NAME就可以得到“Mike”这个值。

1.2 # 井号。除了做为超级用户的提示符之外,还可以在脚本中做为注释的开头字母,每一行语句中,从#号开始的部分就不执行了。

1.3 “” 双引号。shell不会将一对双引号之间的文本中的大多数特殊字符进行解释,如#不再是注释的开头,它只表示一个井号“#”。但 仍 然 保 持 特 殊 含 义 。 ( 在 双 引 号 中 的 仍然保持特殊含义。(在双引号中的 加变量名,即:$PARAM_NAME,依然会转换成变量的值。)

1.3.1 双引号对于某些特殊符号是不起作用的, 例如:”,$,,`(反引号)

1.3.2 双引号和单引号不能嵌套。即:echo ‘””’ 输出””, echo “’’” 输出’’

1.4 ‘’ 单引号。shell不会将一对单引号之间的任何字符做特殊解释。(在双引号中的 加 变 量 名 , 即 : 加变量名,即: PARAM_NAME,不会转换成变量的值。)

1.4.1 echo “$HOME” (结果:/home/xiongguoan)

1.5 `` 倒引号。命令替换。在倒引号内部的shell命令首先被执行,其结果输出代替用倒引号括起来的文本,不过特殊字符会被shell解释。

1.5.1 echo ‘ H O M E ’ ( 结 果 : HOME’ (结果: HOME(:HOME)

1.6 \ 斜杠。用来去掉在shell解释中字符的特殊含义。在文本中,跟在\后面的一个字符不会被shell特殊解释,但其余的不受影响。

1.7 []中括号, 主要是用来测试条件的,通常放在if语句的后面。 (不过还是不太明白),但是中括号本身不会在测试语句执行后消失。

1.7.1 echo [$HOME] (结果:出现错误)

1.7.2 echo [$HOME ] (结果:[/home/xiongguoan ]) (注意:HOME后面有空格哦。)

1.7.3 echo [$HOME –eq ‘/xiong’] (结果:[/home/xiongguoan –eq /xiong])

1.8 {}大括号,主要是和$符号配合,作为字符串连接来使用

1.8.1 echo ${HOME}ismydir (结果:/home/xiongguoanismydir)

2 预定义的变量

2.1 特殊变量

$ shell变量名的开始,如$var

| 管道,将标准输出转到下一个命令的标准输入

$# 记录传递给Shell的自变量个数

注释开始

& 在后台执行一个进程

? 匹配一个字符

  •  匹配0到多个字符(与DOS不同,可在文件名中间使用,并且含.)
    

$- 使用set及执行时传递给shell的标志位

$! 最后一个子进程的进程号

$? 取最近一次命令执行后的退出状态(返回码)

$* 传递给shell script的参数

$@ 所有参数,个别的用双引号括起来

$0 当前shell的名字

$n (n:1-) 位置参数

$$ 进程标识号(Process Identifier Number, PID)

 输出重定向

< 输入重定向

 输出重定向(追加方式)

[] 列出字符变化范围,如[a-z]

2.2 代值变量

  • 任意字符串

? 一个任意字符

[abc] a, b, c三者中之一

[a-n] 从a到n的任一字符

2.3 特殊字符的表达

\b 退回
\c 打印一行时没有换行符 这个我们经常会用到
\f 换页
\r 回车
\t 制表
\v 垂直制表
\ 反斜线本身

2.4 其他字符

2.4.1 分号

; 表示一行结束

2.4.2 圆括号

() 表示在新的子shell中执行括号内的命令(这样可以不改变当前shell的状态。)

但是圆括号在单/双引号内失去作用,只作为普通字符。

2.4.3 花括号

2.4.3.1 分割命令的用法

与圆括号相似,但是:1. 花括号内的命令在当前shell中执行;2.花括号必须作为命令的第一个字符出现。

2.4.3.2 引用变量的用法

在$后面,表示变量名的开始和结束

2.4.4 方括号

相当与test命令,用来执行测试条件,通常用在需要判断条件的语句后面,例如:if,while等等。

3 设置变量

3.1 格式:VARNAME=value (i.e. PARAM=’hello’)

3.2 注意:

3.2.1 等号的前后不能有空格

3.2.2 如果变量的值是一个命令的执行结果,请加上反引号(`)。

4 引用变量

4.1 $VARNAME

4.1.1 e.i. echo $HOME (结果:/home/xiongguoan)

4.2 变量默认值

4.2.1 在引用一个变量的时候可以设定默认值。如果在此之前,该变量已经设定了值,则此默认值无效。如果此时变量没有被设定值,则使用此默认值(但是没有改变此变量的值)。

4.2.2 echo Hello ${UNAME:-there} #其中there是UNAME的默认值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值