【发布时间】:2019-03-29 09:35:30
【问题描述】:
我有点挣扎。 当我编写一个 ksh 脚本时,我需要提取一个字符串的子字符串,其中分界符的出现次数是灵活的。
这是因为我的字符串包含一个文件的名称,该文件可能会被压缩多次,因此具有超过 1 个点 (.)。 这些点将是我的分隔符,但由于供应商可能会在文件名中包含版本号(例如,software-v.3.2.4.tar.gz),我发现不应该切断最后一个后缀。
进度如下:
文件名保存在变量中。 文件第一次解压。 (去掉文件的 .gz 后缀) 现在我需要提取 .tar 存档。但我的命令仍将保留 .gz 后缀。命令将不起作用,因为文件不再具有后缀。
如何获取变量的后缀。 我不能保证分隔符的数量保持不变。
我尝试了几种 |转 |凝乳'。' | rev,但在这种情况下,我只得到后缀。
我还尝试使用文件的实际名称再次初始化 $fileName 变量,但因此我需要搜索整个目录。我尽量避免这种情况。
...
fileName="whole file name"
pathTo="path in which it should be moved after decompression"
if [ "$fileType" = "gz" ]; then
gzip $pathTo$fileName -d $pathTo
#Problem occurs right here
tar xfv $pathTo$fileName -C $pathTo
else
echo "Unknown Filetype. Cannot decompress. Script stopped."
exit
fi
...
感谢您的帮助。 问候
扬斯克
【问题讨论】:
-
请提供一些您拥有和想要的示例
-
查看 Charles Duffy 对类似问题的回答 - stackoverflow.com/a/22727262/7366100 - 不要忘记查看 BashFAQ 链接