Bash-如何区分控制运算符和元字符?

Bash-如何区分控制运算符和元字符?,bash,shell,Bash,Shell,根据: 控制操作员 执行控制功能的令牌。它是一个换行符或下列换行符之一:“| |”、“&&”、“&”、“;”、“;”、“|”、“&”、”,或“” 元字符 一种字符,在不加引号的情况下分隔单词。元字符是空白字符或以下字符之一:“|”、“&”、“;”、“,”、“,” 许多字符既是控制运算符又是元字符 那么,我怎样才能知道例如a 如果条件允许,则采取行动;然后CMD;以fi为例 );在上下文中似乎是一个控制运算符,因为它可以被换行符替换。 但是,移除周围的前置和后置空间;还可以。 如果它是一个操作员,

根据:

控制操作员

执行控制功能的令牌。它是一个换行符或下列换行符之一:“| |”、“&&”、“&”、“;”、“;”、“|”、“&”、”,或“”

元字符

一种字符,在不加引号的情况下分隔单词。元字符是空白字符或以下字符之一:“|”、“&”、“;”、“,”、“,”

许多字符既是控制运算符又是元字符

那么,我怎样才能知道例如a

如果条件允许,则采取行动;然后CMD;以fi为例

);在上下文中似乎是一个控制运算符,因为它可以被换行符替换。 但是,移除周围的前置和后置空间;还可以。
如果它是一个操作员,不是应该用sapces来分隔吗?

根据bash手册,操作员是:

控制运算符或重定向运算符。参见重定向, 获取重定向运算符的列表。运算符至少包含一个 不带引号的元字符

元字符基本上是任何不能成为单词一部分的字符

词的定义:

由shell作为一个单元处理的字符序列。单词不能包含无引号的元字符

操作符周围不需要空格,因为它们总是包含元字符,这使解析器知道它不是单词的一部分

一个例外是重定向,例如

ls 2>&1

在重定向语句之前需要一个空格,因为运算符有一个参数2,并且要求该参数位于运算符旁边,否则它将是ls的一个参数。

根据bash手册,运算符是:

控制运算符或重定向运算符。参见重定向, 获取重定向运算符的列表。运算符至少包含一个 不带引号的元字符

元字符基本上是任何不能成为单词一部分的字符

词的定义:

由shell作为一个单元处理的字符序列。单词不能包含无引号的元字符

操作符周围不需要空格,因为它们总是包含元字符,这使解析器知道它不是单词的一部分

一个例外是重定向,例如

ls 2>&1
在重定向语句之前需要一个空格,因为运算符有一个参数2,并且要求该参数位于运算符旁边,否则它将是ls的一个参数。

我没有考虑到;与…相同,与…相同,与…相同,与…相同,与…相同,与…相同,与…相同,与…相同,与…相同,与…相同,与…相同。