不能随意空格

Alt text

1、echo:打印信息

echo "Kylin"

2、exit:用于终止脚本的执行,并返回一个退出状态码

  • 正常退出
    echo "脚本执行完毕"
    exit 0
  • 异常退出
    if [ $# -lt 1 ];then
    echo "参数不足"
    exit 1
    fi

3、$0、$1、$2等

假设执行 ./test.sh a b c 这样一个命令,则可以使用下面的参数来获取一些值:

  • $0 对应 ./test.sh 这个值。如果执行的是 ./work/test.sh, 则对应 ./work/test.sh 这个值,而不是只返回文件名本身的部分。
  • $1 会获取到 a,即 $1 对应传给脚本的第一个参数。
  • $2 会获取到 b,即 $2 对应传给脚本的第二个参数。
  • $3 会获取到 c,即 $3 对应传给脚本的第三个参数。$4$5 等参数的含义依此类推。

3.1、在vue中

  • npm run test
  • "test": "sh scripts/test.sh"
    #!/bin/bash

    echo "By Kylin"

    zero=$0
    one=$1

    echo "输入了:$zero, $one"

4、if语句

  • fi关键词用于标记if语句结尾
  • 可以使用[][[]](())等条件表达式
  • 都需要空格隔开,(())除外
    if 判断语句一 ; then
    command1
    elif 判断语句二; then
    command2
    else
    command3
    fi

    #!/bin/bash
    echo "By Kylin"
    one=$1
    echo "输入了:$one"
    if [[ $one > 0 ]]; then
    echo "zero大于0"
    else
    echo "zero不大于0"
    fi

module_name=$1 
module_name=$module_name vue-cli-service build

file_name=【$(date +%m%d)】$module_name-fe.zip
if [[ -f $file_name ]]; then
rm -rf $file_name
fi

zip -r $file_name ./dist
这段代码的作用是根据传入的参数 $1,生成一个模块名称 module_name,然后使用 Vue CLI Service 进行项目构建。接着,根据当前日期和模块名称生成一个文件名 file_name,并检查是否存在同名的文件。如果存在,则删除该文件。最后,将 ./dist 目录下的文件压缩为一个名为 $file_nameZIP 文件。
具体解释如下:

  1. module_name=$1: 将传入的第一个参数 $1 赋值给变量 module_name。这个参数可能是一个模块名称,用于后续的文件命名和构建过程。
  2. module_name=$module_name vue-cli-service build: 使用 Vue CLI Service 构建项目。$module_name 是之前定义的模块名称,通过这个命令可以进行项目构建。
  3. file_name=【$(date +%m%d)】$module_name-fe.zip: 根据当前日期和模块名称生成一个文件名 file_name。文件名的格式为 【月日】模块名称-fe.zip,其中 $(date +%m%d) 表示获取当前日期的月份和日期。
  4. if [[ -f $file_name ]]; then: 检查是否存在同名的文件。-f 表示判断文件是否存在,$file_name 是之前定义的文件名。
  5. rm -rf $file_name: 如果存在同名的文件,则使用 rm 命令删除该文件。`-rf 表示递归删除文件和目录。
  6. zip -r $file_name ./dist: 将 ./dist 目录下的文件压缩为一个名为 $file_name 的 ZIP 文件。-r 表示递归地将目录及其子目录中的文件都压缩进 ZIP 文件中。

5、解析日期和时间

year=`date +%Y`
month=`date +%m`
day=`date +%d`
echo "$(date +%Y)"
echo "今天是$year-$month-$day"

year=`date +%Y`
month=`date +%m`
day=`date +%d`
hour=`date +%H`
minute=`date +%M`
second=`date +%S`

6、read:读取

echo "请输入你的名称"

read name

echo "Hello $name"

7、测试文件

-e name    测试一个文件是否存在
-d name 测试name 是否为一个目录
-f name 测试name 是否为普通文件(而不是目录、设备文件或其他特殊类型的文件)
-L name 测试name 是否为符号链接
-r name 测试name 文件是否存在且为可读
-w name 测试name 文件是否存在且为可写
-x name 测试name 文件是否存在且为可执行
-s name 测试name 文件是否存在且其长度不为0
f1 -nt f2 测试文件f1 是否比文件f2 更新
f1 -ot f2 测试文件f1 是否比文件f2 更旧

8、运算符