shell script学习笔记1

来源:互联网 发布:涤纶 锦纶 知乎 编辑:程序博客网 时间:2024/05/23 02:05

一些常用的变量,符号的意义:

----------------------------------------------------------

$?

上一条语句的执行结果


$$

当前进程ID


()

命令组,如 (a=0;echo $a),在命令组中的部分将作为子shell来运行,所以其中定义的变量在命令组外就不可用。


$()

同样是命令替换,它是以子shell来运行的,所以是不同的进程;

注意 | 管道符之后的命令也同样是一个子shell,所以不让尝试在子shell外去访问子shell中的局部变量!


{xxx,yyy}

大括号扩展作用echo {file1,file2}\:{A,B} # 大括号中不要留无意义的空格
file1:A file1:B file2:A file2:B

{} 代码块的作用,可以用来重定向代码块的标准输出、输入与()不同,{}并不会开启子shell


(())

数学计算扩展


<the>

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


 >|

强制重定向


""

引号的特殊效果是,保护字符中的特殊符号不被shell或者shell script重新解释或者扩展。(比如shell中的特别字符*)
单引号,硬转义,其内部的所有shell元字符,通配符都会被关闭。
双引号,软转义,其内部只允许出现特定的shell元字符:$用于参数替换 `用于命令代替。
var="a b c"
COMMAND $var # COMMAND 会带三个参数"a" "b" "c"
COMMAND "$var" # COMMAND 会带一个参数"a b c"

\

转义字符
一个具有特殊含义的字符前面放上一个转义字符就告诉shell这个字符失去了特殊的含义。
注意,在某些特定的命令中,比如echo和sed,转义字符往往起到相反的效果,它反倒有可能引发出这个字符的特殊含义。


 -

代表标准输入或者标准输出
(cd /source/directory && tar cf - .) | (cd /dest/directory && tar xpvf -)
从一个目录移动整个目录树到另一个目录



原创粉丝点击