Bash指令语法和解析方式

一、命名语法

一条Bash指令的的命名一般包含三个部分:command(指令);option(选项);argument(参数)。

命名的格式为:command option argument。

ls -l -F file1 file2 file3

  -l:以单行格式输出文件详细信息

  -F:在每个输出项后面追加文件的类型标识符,具体含义包括:

“*”表示具有可执行权限的普通文件;

“/”表示目录。“@”表示符号链接;

“|”表示命令管道FIFO;

“=”表示sockets套接字;

当文件为普通文件时,不输出任何的字符。

选项

对于选项(option)类型有两种:

1)短选项(short option):由一个连字符和一个字母构成,例如:-a, -s等;
2)长选项(long options):由两个连字符和一些大小写字母组合的单词构成,例如:--size,--help等

  通常,一个程序会提供short option和long options两种形式,例如:ls -a,--all。另外,短选项(short option)是可以合并的,例如:-sh表示-s和-h的组合,如果要表示为一个选项需要用长选项--sh。

不是所有的Linux命令都遵循以上的规则,例如:

find -type d -mindepth 2

参数

1、可以是零个或者多个:有默认值;不需要参数。

2、可以是一个或者多个。

二、语法的描述规则

1、方括号中的项是可选的;

2、不在方括号中或者是在大括号中的项是必选的;

3、黑体字必须按原样准确键入;

4、斜体字必须使用适当的值代替;

5、后面接省略号的参数可以多次重复。

如:

ls [ABCDEFGHLOIU@abcdefghlkj][file...]

6、如果一个单独的选项和一个参数组合在一起,那么该选项和参数必须同时使用,如:

find [-H][-L][-P][-D][-D debugopts][-O level][path...][expression]

7、由|(竖线)字符分开的两个或者多个项,表示可以从这个列表中选择一个项,如:

who [OPTION]...[FILE|ARG1 ARG2]

  

三、一次输入多条命令

1、以”;“隔开时,如:

date;cal
cal;date   
注:当前者执行失败时,后者就不会执行

  

2、以“||”隔开时,如:

date||cal
cal||date
注:当前者执行失败时,后者才会执行

  

四、强引用和弱引用

1、弱引用 ""

echo "lucky number is ${RANDOM}"
输出的结果为:
lucky number is 12324(随机数)

  

2、强引用 ' '

echo 'lucky number is ${RANDOM}'
输出的结果为:
lucky number is ${RANDOM}

 

为了弄清楚引起这两种引用的差异的原因。我们需要去了解命令行解析的相关知识。

命令行解析

命令行的解析过程:

1、根据${IFS}(Internal Filed Separator)将其拆分为多个字段word;

2、对其中的(metacharacter)元字符进行处理;

3、对命令进行重组并执行。

补充:元字符包括

=:设定变量    &&:若上一个命令返回TRUE,继续执行
$:引用变量    ||:若上一个命令返回FALSE,继续执行
|:管道            ...:省略
{,}:界定变量范围

  

强引用' '内的所有meta元字符被关闭;

弱引用" "内的大部分meta元字符被关闭,部分被保留,如$,{,}等。

关于强引用和弱引用的小练习:

$ A="B C"
$ echo "$A"    输出B C
$ echo '$A'     输出$A
$ echo " '$A' "   输出'B C'
$ echo ' "$A" '   输出"$A"
$ echo ' '$A' '    输出B C

  

原文地址:https://www.cnblogs.com/zrs123/p/14000685.html