当前位置: 首页 > news >正文

shell脚本编写注意事项

shell参数特殊字符:

在Shell(如Bash)中,有许多特殊字符被用来控制命令的执行流程、重定向输出、进行参数扩展等。了解这些特殊字符对于编写有效的Shell脚本和命令行操作至关重要。以下是Shell中的一些主要特殊字符:

  1. 空格 ( )

    • 分隔命令及其参数。
  2. 制表符 (\t)

    • 类似于空格,用于分隔命令和参数,但通常用于更宽的间隔。
  3. 换行符 (\n)

    • 结束当前命令并开始新行,但Shell脚本中可以使用反斜杠 \ 在行尾来实现跨行书写命令。
  4. 管道 (|)

    • 用于连接两个命令,前一个命令的标准输出作为后一个命令的标准输入。
  5. 重定向 (>, >>)

    • > 将命令的输出重定向到指定的文件,覆盖任何现有内容。
    • >> 将命令的输出追加到指定的文件后面。
  6. 输入重定向 (<)

    • 从文件读取输入,而不是标准输入(通常是键盘)。
  7. 后台运行 (&)

    • 让命令在后台运行。
  8. 分号 (;)

    • 连接命令序列,每个命令顺序执行,无论前一个命令成功与否。
  9. (&&)

    • 连接命令序列,只有当第一个命令成功时才执行下一个命令。
  10. (||)

    • 连接命令序列,只有当第一个命令失败时才执行下一个命令。
  11. 注释 (#)

    • 表示该行剩余部分为注释,不会被执行。
  12. 双引号 (")

    • 保护字符串中的空格和其他特殊字符,允许变量替换。
  13. 单引号 (')

    • 完全保留字符串内容,不允许变量替换。
  14. 反斜杠 (\)

    • 用于转义紧随其后的字符,使其被视为普通字符而非特殊字符。
  15. 美元符号 ($)

    • 用于变量引用和命令替换。
  16. 星号 (*)

    • 用于文件名模式匹配(通配符)。
  17. 问号 (?)

    • 用于文件名模式匹配,匹配任意单个字符。
  18. 方括号 ([, ])

    • 用于创建更复杂的文件名模式匹配条件。
  19. 左大括号 ({)

    • 与右大括号一起,用于创建范围或列表。
  20. 右大括号 (})

    • 结束范围或列表定义。
  21. 分组 ((, ))

    • 用于将命令组合在一起形成复合命令。
  22. 波浪线 (~)

    • 代表用户的主目录。
  23. 叹号 (!)

    • 用于历史扩展和事件驱动的命令查找。
  24. 尖括号 (<>)

    • 用于非标准的输入/输出重定向。

当编写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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Java设计模式】好奇递归模板模式(CRTP):独特地利用多态性
  • 使用Python写一个适用于Dify和FastGPT的JsonPath插件
  • MySql 忘记 Root 密码
  • P0.9/P1.25全倒装共阴节能COB超微小间距LED显示屏已抢占C位
  • OpenHarmony开发:应用分层架构设计
  • Docker基本使用:根据mysql镜像创建mysql容器
  • 大数据-111 Flink 安装部署 YARN部署模式 FlinkYARN模式申请资源、提交任务
  • openshift node NotReady kubelet http: TLS handshake error
  • (苍穹外卖)day03菜品管理
  • mysql中的mysql 库不存在,进行恢复
  • 第十六章 rust命令行工具开发实践
  • 【系统架构设计师】论文:论SOA面向服务架构技术的应用
  • java基于java.io.Serializable接口的序列化方式学习
  • c++ websocket简单讲解
  • 峟思大坝安全监测系统:科技筑牢工程稳定的基石
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 0x05 Python数据分析,Anaconda八斩刀
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Logstash 参考指南(目录)
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Node + FFmpeg 实现Canvas动画导出视频
  • Promise面试题2实现异步串行执行
  • springMvc学习笔记(2)
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 开源SQL-on-Hadoop系统一览
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 手写一个CommonJS打包工具(一)
  • 微信支付JSAPI,实测!终极方案
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • ​马来语翻译中文去哪比较好?
  • # Java NIO(一)FileChannel
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • (11)MSP430F5529 定时器B
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (HAL库版)freeRTOS移植STMF103
  • (k8s)Kubernetes本地存储接入
  • (Ruby)Ubuntu12.04安装Rails环境
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (动态规划)5. 最长回文子串 java解决
  • (四)opengl函数加载和错误处理
  • (算法)硬币问题
  • (一) storm的集群安装与配置
  • (转)甲方乙方——赵民谈找工作
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Core引入性能分析引导优化
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @EnableWebSecurity 注解的用途及适用场景
  • [@Controller]4 详解@ModelAttribute
  • [Algorithm][综合训练][kotori和气球][体操队形][二叉树中的最大路径和]详细讲解
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)