shell脚本编写注意事项
shell参数特殊字符:
在Shell(如Bash)中,有许多特殊字符被用来控制命令的执行流程、重定向输出、进行参数扩展等。了解这些特殊字符对于编写有效的Shell脚本和命令行操作至关重要。以下是Shell中的一些主要特殊字符:
-
空格 (
- 分隔命令及其参数。
-
制表符 (
\t
)- 类似于空格,用于分隔命令和参数,但通常用于更宽的间隔。
-
换行符 (
\n
)- 结束当前命令并开始新行,但Shell脚本中可以使用反斜杠
\
在行尾来实现跨行书写命令。
- 结束当前命令并开始新行,但Shell脚本中可以使用反斜杠
-
管道 (
|
)- 用于连接两个命令,前一个命令的标准输出作为后一个命令的标准输入。
-
重定向 (
>
,>>
)>
将命令的输出重定向到指定的文件,覆盖任何现有内容。>>
将命令的输出追加到指定的文件后面。
-
输入重定向 (
<
)- 从文件读取输入,而不是标准输入(通常是键盘)。
-
后台运行 (
&
)- 让命令在后台运行。
-
分号 (
;
)- 连接命令序列,每个命令顺序执行,无论前一个命令成功与否。
-
与 (
&&
)- 连接命令序列,只有当第一个命令成功时才执行下一个命令。
-
或 (
||
)- 连接命令序列,只有当第一个命令失败时才执行下一个命令。
-
注释 (
#
)- 表示该行剩余部分为注释,不会被执行。
-
双引号 (
"
)- 保护字符串中的空格和其他特殊字符,允许变量替换。
-
单引号 (
'
)- 完全保留字符串内容,不允许变量替换。
-
反斜杠 (
\
)- 用于转义紧随其后的字符,使其被视为普通字符而非特殊字符。
-
美元符号 (
$
)- 用于变量引用和命令替换。
-
星号 (
*
)- 用于文件名模式匹配(通配符)。
-
问号 (
?
)- 用于文件名模式匹配,匹配任意单个字符。
-
方括号 (
[
,]
)- 用于创建更复杂的文件名模式匹配条件。
-
左大括号 (
{
)- 与右大括号一起,用于创建范围或列表。
-
右大括号 (
}
)- 结束范围或列表定义。
-
分组 (
(
,)
)- 用于将命令组合在一起形成复合命令。
-
波浪线 (
~
)- 代表用户的主目录。
-
叹号 (
!
)- 用于历史扩展和事件驱动的命令查找。
-
尖括号 (
<>
)- 用于非标准的输入/输出重定向。
当编写Shell脚本或命令时,确保理解这些特殊字符的作用和用法,以便正确地构造你的命令和脚本。
sed
注意事项:
[root@gateway-1-2 seatunnel]# cat lyl.conf
abcde
select * from where=$where
abcde
[root@gateway-1-2 seatunnel]# sed -e 's/$where/(t1.part_id=\'2024-07-16\' and user_group_id=\'54\')/g' lyl.conf > lyltmp.conf
-bash: syntax error near unexpected token `)'
[root@gateway-1-2 seatunnel]# sed -e 's/$where/(t1.part_id="2024-07-16" and user_group_id="54")/g' lyl.conf > lyltmp.conf
[root@gateway-1-2 seatunnel]# cat lyltmp.conf
abcde
select * from where=(t1.part_id="2024-07-16" and user_group_id="54")
abcde