Shell:检查参数是否存在并匹配表达式

Mar*_*ark 3 regex bash shell

我是Shell脚本的新手,正在尝试编写一种功能来检查参数是否存在以及是否与表达式匹配。我不确定如何编写表达式,所以这是我到目前为止的内容:

#!/bin/bash

if [[ -n "$1"] && [${1#*.} -eq "tar.gz"]]; then
  echo "Passed";
else 
  echo "Missing valid argument"
fi
Run Code Online (Sandbox Code Playgroud)

要运行脚本,我将输入以下命令:

# script.sh YYYY-MM.tar.gz
Run Code Online (Sandbox Code Playgroud)

我相信我拥有的是

  1. 如果YYYY-MM.tar.gz不在script.sh之后,它将回显“缺少有效参数”,并且
  2. 如果文件未以.tar.gz结尾,则回显相同的错误。

但是,我还要检查完整文件名是否为YYYY-MM.tar.gz格式。

Cyr*_*rus 5

if [[ -n "$1" ]] && [[ "${1#*.}" == "tar.gz" ]]; then
Run Code Online (Sandbox Code Playgroud)

-eq:(等于)用于算术测试

==:比较字符串

看到: help test