bash – 在“$@”中的最后一个参数之前提取参数

我试图创建一个Bash脚本,它将从命令行提取的最后一个参数提取到一个变量,以供其他地方使用。这里是我正在处理的脚本:
#!/bin/bash
# compact - archive and compact file/folder(s)

eval LAST=\$$#

FILES="$@"
NAME=$LAST

# Usage - display usage if no parameters are given
if [[ -z $NAME ]]; then
  echo "compact <file> <folder>... <compressed-name>.tar.gz"
  exit
fi

# Check if an archive name has been given
if [[ -f $NAME ]]; then
  echo "File exists or you forgot to enter a filename.  Exiting."
  exit
fi

tar -czvpf "$NAME".tar.gz $FILES

由于第一个参数可以是任何数字,我必须找到一种方法来提取最后一个参数(例如compact file.a file.b file.d files-a-b-d.tar.gz)。由于现在的存档名称将包含在要压缩的文件中。有没有办法做到这一点?

要从数组中删除最后一个项目,你可以使用这样:
#!/bin/bash

length=$(($#-1))
array=${@:1:$length}
echo $array

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...