我有MSI文件,里面有version.ini文件,里面包含我需要取出的多个变量。
例如:
[VERSION]
fileid=...
version=...
option=...
所以我有简单的命令:
cabextract -p -F "version.ini" installer.msi | awk -F '=' '{if ($1 == "fileid" || $1 == "version" || $1 == "language") print tolower($1)"=\""$2"\"";}' > /tmp/tmpoutput
source /tmp/tmpoutput
echo $version
并且我实现了从msi文件中提取version.ini并从我想要的ini文件信息中提取。
但只是出于好奇,有没有更漂亮的版本可以取出变量而无需将其临时写入文件。 它有nosense,但我找不到另一种工作和简单的方法来加载多个变量。
如果我写这样的命令:
var=$(cabextract -p -F "version.ini" installer.msi | awk -F '=' '{if ($1 == "fileid" || $1 == "version" || $1 == "language") printtolower($1)"=\""$2"\"";}')
它不起作用。
我无法在$()
中输入命令,因为它会合并awk命令的结果。
我试图将它放入阵列,但也失败了。
有什么建议吗?
答案 0 :(得分:0)
您可以在此处使用process substitution
:
ListView lv = (ListView)findViewById(android.R.id.list);
TextView emptyText = (TextView)findViewById(android.R.id.empty);
lv.setEmptyView(emptyText);
使用source <(cabextract -p -F "version.ini" installer.msi | awk -F '=' '{if ($1 == "fileid" || $1 == "version" || $1 == "language") print tolower($1)"=\""$2"\"";}')
的此指令输出将像文件一样用于cabextract
。