首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编写Shell脚本最佳实践

这一点很重要,当我们脚本需要接受参数时候,我们一定要先判断参数是否合乎规范,给出合适,方便使用者了解参数使用。...命名有标准 所谓命名规范,基本包含下面这几点: 文件名规范,以.sh结尾,方便识别 变量名字要有含义,不要拼错 统一命名风格,写shell一般用小写字母加下划线 编码要统一 在写脚本时候尽量使用UTF...日志和 日志重要性不必多说,能够方便我们回头纠错,在大型项目里是非常重要。 如果这个脚本是供用户直接在命令行使用,那么我们最好还要能够在执行时实时执行过程,方便用户掌控。...这时候要么用iconv之类字符集转换工具字符集进行切换,要么就在不影响查找情况下对grep加-a参数,所有文件看成文本文件: find ....而不是func{} 尽量使用[[]]来代替[] 尽量使用$()命令结果赋给变量,而不是反引号 在复杂场景下尽量使用printf代替echo进行 事实上,这些写法很多功能都比旧写法要强大,用时候就知道了

76610

编写Linux Shell脚本最佳实践

这一点很重要,当我们脚本需要接受参数时候,我们一定要先判断参数是否合乎规范,给出合适,方便使用者了解参数使用。...命名有标准 所谓命名规范,基本包含下面这几点: 文件名规范,以.sh结尾,方便识别 变量名字要有含义,不要拼错 统一命名风格,写shell一般用小写字母加下划线 编码要统一 在写脚本时候尽量使用UTF...日志和 日志重要性不必多说,能够方便我们回头纠错,在大型项目里是非常重要。 如果这个脚本是供用户直接在命令行使用,那么我们最好还要能够在执行时实时执行过程,方便用户掌控。...这时候要么用iconv之类字符集转换工具字符集进行切换,要么就在不影响查找情况下对grep加-a参数,所有文件看成文本文件: find ....而不是func{} 尽量使用[[]]来代替[] 尽量使用$()命令结果赋给变量,而不是反引号 在复杂场景下尽量使用printf代替echo进行 事实上,这些写法很多功能都比旧写法要强大,用时候就知道了

1K30
您找到你想要的搜索结果了吗?
是的
没有找到

高效Shell编程建议及入坑

给出合适,方便使用者了解参数使用。...,所以再执行脚本前需要对其进行chomd +x test.sh 日志重要性不必多说能够方便我们回头纠错,在大型项目里是非常重要,同时能够在执行时实时执行过程,方便用户掌控。...main "$@" #调用主函数传入命令行参数 5)函数返回使用函数返回要注意shell中函数返回只能是整数,估计是因为一般情况下一个函数返回通常表示这个函数运行状态,所以一般都是...若有用未设置变量即让脚本退出执行 set -o nounset # 或 set-u 12)写法新特性-在变量测试 写法不是指有多厉害而是指我们可能更希望使用引入一些语法,更多是偏向代码风格...,(())通用性比较好 尽量使用$()命令结果赋给变量而不是反引号 在复杂场景下尽量使用printf代替echo进行 #示例1.建议采用(())来做为除了test命令首选,不容易出错在进行变量测试时候

78910

Linux系统入门系列之三:初识Bash

(是的,就是一个问号)为上一个执行命令所传回,一般成功执行,传回0,发生错误,就会传错误代码。...命令,示例如下: 一般一个变量只能在一个子程序中运行,export命令可以变量变为环境变量,从而可以在其它子程序中运行,示例如下: 使用set命令可以查看当前环境所有变量(包含环境变量和自定义变量...(单个字符)来指代: 可以通过“/”字符串替换为字符串: 假如标记字符存在于多处,“#”为删除最短字符,“##”为删除最长字符,同样适用于“%”和“/”,示例如下: 通过shell脚本,也可以引用其他软件和脚本运行结果来进行变量赋值与运算...⑵文本处理 在一般模式里,x/X为向后/前删除一个字符,yy、dd为复制、删除光标所在行,p为复制内容粘贴到光标下一。...查找第2第4第一个is替换为ia,其命令为:2,4s/is/ia/: 其中s为替换意思,若是第三全部is替换为ia,则为:2,4s/is/ia/g: 若是最后一行号可以用“$”来表示

2.8K30

shell语法学习

这是一个简单程序,字符串 “HelloWorld” 打印到标准输出中。然后,使用 vim 或 nano 等编辑器创建 hello-world.sh 文件,并将以下行复制其中。 #!.../hello-world.sh Bash 它将打印出传递给脚本内部字符串。 2.使用 echo 打印 echo 命令用于在 bash 中打印信息。...-e 选项用于告诉 echo 传递给它字符串包含特殊字符,需要扩展功能。 3.使用注释 注释对文档很有用,是高质量代码库要求。注释放在处理关键逻辑代码中是一种常见做法。...27.附加到文件 下面的 shell 脚本示例向您展示如何使用 bash 脚本数据附加到文件系统上文件。它向早期 editors.txt 文件添加了一。 #!...然后,它将内容放入新文件,保持原始文件完整性。 40.系统维护 我经常使用一个小 Linuxshell 脚本来升级我系统,而不是手动升级。

1.2K40

编写Linux Shell脚本最佳实践

这一点很重要,当我们脚本需要接受参数时候,我们一定要先判断参数是否合乎规范,给出合适,方便使用者了解参数使用。...命名有标准 所谓命名规范,基本包含下面这几点: 文件名规范,以.sh结尾,方便识别 变量名字要有含义,不要拼错 统一命名风格,写shell一般用小写字母加下划线 编码要统一 在写脚本时候尽量使用UTF...日志和 日志重要性不必多说,能够方便我们回头纠错,在大型项目里是非常重要。 如果这个脚本是供用户直接在命令行使用,那么我们最好还要能够在执行时实时执行过程,方便用户掌控。...其实代码简短在还能某种程度上能保证效率提升,比如下面的例子: 这两种方法做事情都一样,就是查找所有的.txt后缀文件做一系列替换。...$()命令结果赋给变量,而不是反引号 在复杂场景下尽量使用printf代替echo进行 事实上,这些写法很多功能都比旧写法要强大,用时候就知道了。

1.1K90

编写Linux Shell脚本最佳实践

这一点很重要,当我们脚本需要接受参数时候,我们一定要先判断参数是否合乎规范,给出合适,方便使用者了解参数使用。...命名有标准 所谓命名规范,基本包含下面这几点: 文件名规范,以.sh结尾,方便识别 变量名字要有含义,不要拼错 统一命名风格,写shell一般用小写字母加下划线 编码要统一 在写脚本时候尽量使用UTF...日志和 日志重要性不必多说,能够方便我们回头纠错,在大型项目里是非常重要。 如果这个脚本是供用户直接在命令行使用,那么我们最好还要能够在执行时实时执行过程,方便用户掌控。...其实代码简短在还能某种程度上能保证效率提升,比如下面的例子: 这两种方法做事情都一样,就是查找所有的.txt后缀文件做一系列替换。...$()命令结果赋给变量,而不是反引号 在复杂场景下尽量使用printf代替echo进行 事实上,这些写法很多功能都比旧写法要强大,用时候就知道了。

74520

40 个简单又有效 Linux Shell 脚本示例

/hello-world.sh 它将打印出传递给脚本内部字符串。 2、使用 echo 打印 echo 命令用于在 bash 中打印信息。...-e 选项用于告诉 echo 传递给它字符串包含特殊字符,需要扩展功能。 3、使用注释 注释对文档很有用,是高质量代码库要求。注释放在处理关键逻辑代码中是一种常见做法。...25、读取文件 Bash 脚本允许用户非常有效地读取文件。下面的示例展示如何使用 shell 脚本读取文件。首先,创建一个名为 editors.txt 文件,其中包含以下内容。 1....27、附加到文件 下面的 shell 脚本示例向您展示如何使用 bash 脚本数据附加到文件系统上文件。它向早期 editors.txt 文件添加了一。 #!...然后,它将内容放入新文件,保持原始文件完整性。 40、系统维护 我经常使用一个小 Linuxshell 脚本来升级我系统,而不是手动升级。

18210

【建议收藏系列】爆肝3w字带你理解什么叫运维~

Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行,不需要编译,Shell程序从脚本中一读取执行这些命令,相当于一个用户把脚本命令一Shell提示符下执行...和C语言不同是,Shell变量不需要明确定义类型,事实上Shell变量都是字符串,比如我们定义VAR=45,其实VAR字符串45而非整数。...Shell变量不需要先定义后使用,如果对一个没有定义变量取值,则为空字符串。 文件名代换(Globbing):* ?...默认情况echo内容后面跟一个回车换行。...因为grep找包含某一模式,这一包含一个符合模式字符串234.234.04.567。相反,123.4234.045.678这一包含符合模式字符串,所以不会被找出来。

2K30

shell programming tutorial

脚本编写 Shell 脚本是纯文本文件,可以使用任何文本编辑器编写 Shell 脚本通常是以 .sh 作为后缀名 第一:指定用哪个程序来编译和执行脚本。...stty -echo // 输入不回     stty echo // 输入 (二)输出--echo 命令 echo $num 或 echo ${num}   //输出一文本 echo -n...反引号 命令替换(一个命令标准输出插入命令任何位置) $()     同上 命令替换可以嵌套  如果使用反引号,则内部反引号必须用反斜杠来转义。...文件名  //类似文件包含,也可以使用source。 这两个命令都以一个脚本为参数,该脚本将作为当前shell环境执行,即不会启动一个子进程。...sh -x xx.sh 是在一个脚本中,调用另一个脚本执行,启动一个子进程,-x 会输出所有的执行信息。 脚本调用脚本,要对被调用脚本执行返回进行判断。

1.4K90

编写 Shell 脚本最佳实践

这一点很重要,当我们脚本需要接受参数时候,我们一定要先判断参数是否合乎规范,给出合适,方便使用者了解参数使用。...命名有标准 所谓命名规范,基本包含下面这几点: 文件名规范,以. sh 结尾,方便识别 变量名字要有含义,不要拼错 统一命名风格,写 shell 一般用小写字母加下划线 编码要统一 在写脚本时候尽量使用...日志和 日志重要性不必多说,能够方便我们回头纠错,在大型项目里是非常重要。 如果这个脚本是供用户直接在命令行使用,那么我们最好还要能够在执行时实时执行过程,方便用户掌控。...函数返回使用函数时候一定要注意,shell 中函数返回只能是整数,估计是因为一般情况下一个函数返回通常表示这个函数运行状态,所以一般都是 0 或者是1就够了,因此就设计成了这样。...[] 尽量使用 $() 命令结果赋给变量,而不是反引号 在复杂场景下尽量使用 printf 代替 echo 进行 事实上,这些写法很多功能都比旧写法要强大,用时候就知道了。

99410

Linux基础——正则表达式

该模式描述在查找文字主体时待匹配一个或多个字符串。 正则表达式作为一个模板,某个字符模式与所搜索字符串进行匹配。...默认为2 如: (列出file中除包含panda样式外并列出其上下2)(若要改变默认,直接改变NUM 即可) $ grep -C[NUM] panda file 4 、-c,--count...脚本在这一查找sed以运行命令,这里定位在/bin。 第二以/company/开始,这是附加操作起始位置。a\通知sed这是一个附加操作,首先应插入二个。...第三、四是附加操作要加入拷贝实际文本。 这里只举例通过sed脚本增加操作,有关sed其他操作大家要会举一反三。 五、awk 命令: awk 也是一个数据处理工具!...2、shell脚本方式 所有的 awk命令插入一个文件,使 awk 程序可执行,然后 awk 命令解释器作为脚本,以便通过键入脚本名称来调用。相当于 shell 脚本:#!

4.3K30

Shell编程从看懂看开①(Shell概述、变量、运算符、条件判断)

shell脚本是以行为单位执行,在执行脚本时候会分解成一依次执行。脚本通常以sh为扩展名,包含成分主要有注释、命令、Shell变量和流程控制语句。其中:① 注释。...用于对脚本进行解释和说明,在注释前要加上“#”② 命令。在Shell脚本中可以出现任何在交互方式下使用命令。③ Shell变量。Shell支持具有字符串变量。④ 流程控制。...中打开一个子 shell 来执行脚本内容,当脚本内容结束,则子 shell 关闭,回到父 shell 中,子进程中变量和动作结束后不会传给父进程。.../helloworld.shhelloworld2特殊变量==$n==基本语法:$n (功能描述:n 为数字,$0 代表该脚本名称,$1-$9 代表第一第九个参数,十以上参数,十以上参数需要用大括号包含...反引号功能是命令替换,在反引号() 中内容通常是命令行,程序会优先执行反引号中内容,使用运行结果替换掉反引号处内容。

75620

shell脚本扩展「建议收藏」

该模式描述在查找文字主体时待匹配一个或多个字符串。 正则表达式作为一个模板,某个字符模式与所搜索字符串进行匹配。...反检索,只显示不匹配 8、精确匹配: 例如在抽取字符串“ 48”,返回结果包含诸如484和483等包含“48”其他字符串,实际上应精确抽取只包含48各行。...第一是sed命令解释脚本在这一查找sed以运行命令,这里定位在/bin。 第二以/company/开始,这是附加操作起始位置。a\通知sed这是一个附加操作,首先插入二个。...第三、四是附加操作要加入拷贝实际文本。 这里只举例通过sed脚本增加操作,有关sed其他操作大家要会举一反三。 五、awk命令: awk也是一个数据处理工具!...2.shell脚本方式 所有的awk命令插入一个文件,使awk程序可执行,然后awk命令解释器作为脚本,以便通过键入脚本名称来调用。 相当于shell脚本:#!

5.7K20

Linux命令(32)——grep命令

以单独输出匹配每一个模式字符串。 (1.2)wc -l 统计输入行数。就可以知道这个要统计字段出现次数了。 (1.3)搜索指定范围数字。比如查询包包含540-600。...(2)在当前目录下所有文件中搜索字符串"lvlv",明确要求搜索子目录中所有文件。 grep -r "lvlv" . (3)显示所有以d开头文件中包含test。...grep 'test' d* (4)打印在aa,bb,cc文件中匹配test式行号。...grep -n 'test' aa bb cc (5)打印aa中包含有至少5个连续小写字符字符串所有 grep '[a-z]\{5\}' aa 注意,这里必须使用双引号或者单引号查找pattern...grep aaa file | wc -l 注意: grep可用于shell脚本,因为grep通过返回一个状态来说明搜索状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索文件不存在

4.5K20

Linux命令(32)——grep命令

以单独输出匹配每一个模式字符串。 (b)wc -l 统一输入行数。就可以知道这个要统计字段出现次数了。 (c)搜索指定范围数字。比如查询包包含540-600。...(2)在当前目录下所有文件中搜索字符串”lvlv”,明确要求搜索子目录中所有文件。 grep -r "lvlv" ./ (3)显示所有以d开头文件中包含test。...grep 'test' d* (4)打印在aa,bb,cc文件中匹配test式行号。...grep -n 'test' aa bb cc (5)打印aa中包含有至少5个连续小写字符字符串所有 grep '[a-z]\{5\}' aa 注意,这里必须使用双引号或者单引号查找pattern...grep aaa file | wc -l 注意: grep可用于shell脚本,因为grep通过返回一个状态来说明搜索状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索文件不存在

4.4K30

深入了解定制 Bash | Linux 中国

它是系统上命令搜索路径。注意,有些应用要求将它们自己目录加入 PATH 变量,这样才能正常使用。跟 CDPATH 一样,通过在赋值右侧引用原值来追加 PATH 变量。...如果你希望前置,只需要把原来($PATH)放到列表末尾即可。还有注意是在 Fedora,这一列通过冒号分隔(:)。...PROMPT_DIRTRIM:如果设置成大于零数,则该用作展开 \w 和 \W 提示符字符串转义符时保留尾随目录组件数量。删除字符替换为省略号。...PS0:这个参数像 PS1 一样展开,在交互式 shell 读取命令之后、执行命令之前展示。 PS1:主提示符字符串。默认是 \s-\v\$ 。 PS2:次提示符字符串。默认是 > 。...PS4:这个参数像 PS1 那样展开,如果设置了 -x 选项,这个展开会在命令行被之前作为提示符显示。展开后第一个字符在必要时会复制数次,指示间接层数。默认是 + 。

1.1K30

Linux命令篇(二):文档编辑部分

举例说明 在文件 testfile.txt 中查找字符串 “linux”,打印匹配 grep linux testfile.txt 在标准输入中查找字符串 “linux”,只打印匹配行数 echo...| grep -c linux 在当前目录中,查找后缀有info字样文件中包含 linux字符串文件,打印出该字符串 grep linux *info 以递归方式在/home/sk/test.../目录下查找文件中带有linux字符串文件,打印字符串所在行内容 grep -r linux /homa/sk/test/ 2、rgrep 命令 rgrep命令等同于 grep -r 命令,主要是用于递归查找文件里符合条件字符串...,基本语法格式如下: rgerp [参数选项] [文件] 举例说明 在当前目录下查找句子中包含"linux"字符串文件 rgrep linux * 3、sed 命令 sed命令主要是利用脚本来处理文本文件...scriss 6 shell scriss # 这里q是退出命令意思 数据查找与替换,sed查找与替换命令与vi类似,格式如下: sed 's/要被取代字串/字串/g' # s是查找与替换意思

9510

如何处理Shell脚本特殊字符

在本教程中,我们介绍有关处理 shell 脚本中特殊字符最常见用例。首先,我们讨论 shell 脚本包装命令和变量替换。 然后,我们处理包含特定前缀文件名。...之后,我们介绍读取命令和IFS变量以逐字读取字符串。 最后,我们看到Shellcheck实用程序运行情况,以及我们如何使用它来确保我们脚本没有任何警告。 2....假设我们有一个变量 整体取HOME变量 使用空格作为分隔符字符串拆分为字段 每个以空格分隔字段视为一个可以由 shell 扩展 glob 在我们例子中,我们对字符串 上下文感兴趣——变量周围双引号产生一个字符串...当我们在不带任何选项shell脚本使用read命令时,它会对空格、反斜杠、续等特殊字符进行一些操作。 例如,让我们在终端中编写一个简单命令来读取一个字符串,然后打印它: #!...让我们尝试在终端中打印这些字符: $ echo \ > 当我们单个反斜杠时,shell 将其视为续

6.8K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券