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