Linux Shell 入门教程


Linux ShellLinux 中提供的一种强大的脚本工具,通过编写脚本可实现一系列动作,本文将介绍 Shell 脚本的基本语法以及应用。

一、基础命令

1. 内容格式

Shell 脚本的定义相对简单,新建 .sh 文件并在文件中首行添加 #!/bin/bash 即可,文件中后续的内容一行即为一条命令,当执行文件时将会自顶向下开始执行命令。

#!/bin/bash

content

当完成脚本文件的定义之后,通过还需要为文件授权为可执行文件,命令如下:

# 创建脚本文件
touch <filename>.sh

# 授权文件为可执行
chmod +x <filename>.sh

2. 打印输出

Linux 中通过 echo 命令可执行内容的打印输出,默认其将直接输出到控制台,可以通过 >>> 将其保存至指定文件中。

# 输出到控制台
echo "Hello World!"

在使用 >>> 将其保存到文件时需要注意,前者将会覆盖文件中原有的数据内容,后 >> 则是继续将内容添加到文件末端。

# 输出到文件,覆盖原内容
echo "Hello World!" > info.log

# 输出到文件,追加到文件末端
echo "Hello World!" >> info.log

3. 变量管理

Shell 中存在两种方式的变量定义获取方式,下面分开进行介绍。

(1) ${}

通过 ${} 即可读取已定义的变量信息,如下示例即通过 ${msg} 读取已经定义的 msg 变量。

msg = "Hello World!"
echo ${msg}

同时也可以直接通过 $ 读取变量,上述的读取也可替换为 $msg 但此方式不便于规范变量名从而造成歧义。

例如下述例子中,变量 $msg 输出即存在多种可能结果,既有可能为 Hellog 也有可能为 World

ms = "Hello"
msg = "World"
echo $msg
(2) $()

通过 $() 获取命令执行的结果,如下述示例通过 $(pwd) 读取 pwd 命令的执行结果。

echo $(pwd)

4. 执行参数

Shell 中通过 $数字 接收脚本执行时的参数。

例如在下述示例中 $0 即为 test.sh,而 $1params

sh test.sh params

二、语法介绍

1. IF条件

Shell 脚本中,条件判断 IF 的基本语法格式如下,其中通过 fi 标记结束,需要注意的是 if[ 以及条件 command 执行相隔的空格不能缺省。

if [ command ]; then
    march_command_1
else
    march_command_2
fi

当存在多分支时,其语法格式如下,通过 elif 判断多分支。

if [ command ]; then
    march_command_1
elif [ command ]; then
    march_command_2
else
    march_command_3
fi

2. Switch

Shell 脚本中的 switch case 语句规则如下:

  • case 开头,以 esac 结尾;
  • ;; 作用等价于 break;
  • * 等价于 default;
  • exit 等价于 return;

下面通过一个具体的示例讲解:

#!/bin/bash

method_1() {
    echo "Hello"
}

method_2() {
    echo "World"
}

case "$1" in
    p1)
        method_1
        ;;
    p2)
        method_2
        ;;
    *)
        echo "default branch"
        exit 1
    ;;
esac

为了更好的对比,将上述 Shell 逻辑转为 Java 代码:

public void demo(String params) {
    swtich (params) {
        case "p1":
            method1();
            break;
        case "p2":
            method2();
            break;
        default:
            System.out.println("default branch")
            return;
    }
}

public void method1() {
    System.out.println("Hello")
}

public void method2() {
    System.out.println("World")
}

文章作者: 烽火戏诸诸诸侯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 烽火戏诸诸诸侯 !
  目录