Shell
解壓縮並將輸出名稱儲存在變數上
我有一個始終同名的 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
。