跳至主要內容

shell脚本基本语法

Genhiy...大约 2 分钟CodingShell

提示

主要内容可以参考:一文掌握shell脚本的基本语法open in new window,本文仅作以补充。

基础内容

  • shell脚本都是以#!开头,告知系统该文件的执行需要一个解释器。 一般是#!/bin/sh#!/bin/bash
  • 执行脚本:sh helloworld.sh或者bash helloworld.sh
  • echo:Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。注意,字符串可以不加双引号直接跟在echo后面。echo -n 表示不换行输出。显示日期:echo `date`。
  • read:从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。
  • 自变量命名:变量名=变量值,等号两侧不能有空格(与其它语言可设空格的区别之处)。变量名一般习惯使用大写。使用变量:$变量名。

部分语句作用

set -x -e -o pipefail

在Shell脚本(通常以.sh为文件扩展名)中,set命令用于改变shell的选项,这些选项可以控制shell的行为。下面是set -x -e -o pipefail中各个选项的解释:

  • -x:这个选项会启用shell的调试模式。当你在脚本中使用set -x时,shell会打印出它执行的每条命令和它们的参数,这有助于调试脚本,因为你可以清楚地看到哪些命令正在被执行。

  • -e:这个选项会让shell在任何语句的执行结果不是true(即退出状态不是0)时立即退出。也就是说,如果脚本中的某个命令失败了(通常是由于错误),脚本会停止执行,不会继续执行后续的命令。这有助于避免错误继续传播,导致更复杂的问题。

  • -o pipefail:这个选项是Bash特有的,它会影响管道操作中的错误处理。默认情况下,如果一个管道命令中的某个部分失败,整个管道命令的退出状态是最后一个命令的退出状态。启用pipefail后,如果管道命令中的任何部分失败,整个管道命令都会失败,并且其退出状态将反映失败部分的退出状态。这使得错误更容易被检测到。

综合来看,set -x -e -o pipefail通常用于编写健壮和易于调试的脚本,因为它提供了详细的执行输出,确保了命令失败时脚本能够立即停止,并且能够更准确地捕捉到管道操作中的错误。