我正在尝试创建一个 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
甚至更短的方式:
array=${@:1:$#-1}
但 aray 是一个Bashism https://mywiki.wooledge.org/Bashism,尽量避免使用它们:(。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)