Shell

解壓縮並將輸出名稱儲存在變數上

  • March 23, 2021

我有一個始終同名的 zip 文件:toto.zip 裡面只有一個名稱可以根據版本更改的文件:totoInstaller-20210321_titi.pkg

我想從 shell 腳本中提取提取文件的名稱(我在 macOS 上)並將其儲存在一個變數中以供以後使用…我嘗試的所有方法都不起作用…任何幫助表示讚賞。

filename=$(unzip toto.zip | awk 'sub(/^[[:space:]]*inflating:[[:space:]]+/,""){print; exit}')

應該使用任何 awk 穩健有效地工作(但未經測試)。還可以考慮對unzip -l.

這應該可以工作(儘管有時,一個系統到另一個系統的版本sed和可用版本之間存在差異):unzip

filename=$(unzip toto.zip | sed -n 's/^[[:space:]]*inflating:[[:space:]]*//p')

此命令解壓縮文件並將輸出發送到sed. sed查找以空格開頭的行,然後inflating: . 如果找到這樣的行,sed 將刪除所有內容,直到並包括inflating:任何後續空格,然後它將列印剩下的內容,這應該是文件名。其他所有內容都被丟棄(感謝 option -n)。最後,我們將輸出儲存在變數中filename

引用自:https://unix.stackexchange.com/questions/640551