代码之家  ›  专栏  ›  技术社区  ›  mles

将stdin传递给plistbuddy

  •  0
  • mles  · 技术社区  · 8 年前

    我有一个脚本显示.ipa文件的info.plist的内容:

    myTmpDir=`mktemp -d 2>/dev/null || mktemp -d -t 'myTmpDir'`
    unzip -q "$1" -d "${myTmpDir}";
    pathToFile=${myTmpDir}/Payload/*.app/Info.plist
    /usr/libexec/PlistBuddy -c "Print" ${pathToFile}
    

    对于大文件,这可能需要一些时间,直到将它们提取到temp文件夹中,以读取小的info.plist(xml)文件。 我想知道是否可以提取info.plist文件并将其传递给plistbuddy?我试过了:

    /usr/libexec/PlistBuddy -c "Print" /dev/stdin <<< \
    $(unzip -qp test.ipa Payload/*.app/Info.plist)
    

    但这会产生

    Unexpected character b at line 1
    Error Reading File: /dev/stdin
    

    提取工作正常。运行时 unzip -qp test.ipa Payload/*.app/Info.plist 我得到info.plist文件的输出到终端:

    $ unzip -qp test.ipa Payload/*.app/Info.plist
    bplist00?&
    
    
    !"#$%&'()*+5:;*<=>?ABCDECFGHIJKXYjmwxyIN}~N_BuildMachineOSBuild_CFBundleDevelopm...
    

    如何将info.plist的内容传递给plistbuddy?

    2 回复  |  直到 8 年前
        1
  •  2
  •   battlmonstr    8 年前

    通常命令支持“-”作为stdin的同义词,但这个plistbuddy工具不支持。

    但您仍然可以从IPA中提取一个文件,将其保存为临时文件,然后对该文件运行plistbuddy:

    tempPlist="$(mktemp)"
    unzip -qp test.ipa "Payload/*.app/Info.plist" > "$tempPlist"
    /usr/libexec/PlistBuddy -c Print "$tempPlist"
    rm "$tempPlist"
    
        2
  •  0
  •   mles    8 年前

    我最终和冥王星在一起,切普纳建议:

    unzip -qp test.ipa Payload/*.app/Info.plist | plutil  -convert xml1 -r -o - -- -
    
    推荐文章