셸 스크립트에서 응용 프로그램 번들의 Info.plist에서 문자열을 읽습니다. 예를 들어, $ FILEPATH가 애플리케이션 번들, 예. /Applications/TextEdit.app
쉘 스크립트 (macOS) : plist 문자열에서 이스케이프 된 유니 코드 문자 인쇄
#!/bin/bash
PLIST=$(/usr/bin/defaults read "$FILEPATH/Contents/Info.plist")
COPYRIGHT=$(echo "$PLIST" | /usr/bin/awk -F" = " '/NSHumanReadableCopyright/{print $2}' RS=';' | /usr/bin/sed 's/^"\(.*\)"$/\1/')
echo "Copyright: $COPYRIGHT"
참고 : 나는 물론, 더 쉬울 것이다, 직접 키를 읽고 있지 않다; 변수 PLIST에 읽혀 지므로 스크립트는 나중에 다른 키들을 읽을 수 있고, defaults
명령을 계속해서 사용할 필요가 없습니다. 줄 바꿈이었다로
Copyright: Copyright \\U00a9 1995-2015, Apple Inc.\\nAll rights reserved.
(예를 들어)이지만, 쉘 스크립트가 실제로 문자열을 출력하도록 어떻게이 문제를 해결할 수 저작권 기호와 줄 바꿈이있는 것입니다.
추신 : 끝 부분에서 줄 바꿈을 제거 하겠지만 첫 단계로 모든 것을 의도 한대로 반향시키고 싶습니다.
I : 는 주석에서 하나 개의 긴 라인으로 전체를 테스트 /Applications/TextEdit.app/Contents/Info.plist "를 인용 할 것을 제안 할 수 있습니다 (단지 다른 앱 이름 또는 $ plist 변수가없는 경우). –
그게 잘됐다. 고맙습니다. 그러나 작동하지 않는 것은 JSON plutil 출력을 변수에 넣고 jplist라고 말한 다음 에코를 출력하고 perl 명령으로 파이프하는 것입니다. 'jplist = $ (/ usr/bin/plutil -convert json -r -o - "$ plist");' 저작권'$ (echo "$ jplist"|/usr/bin/perl -0777 - CSDA -MJSON :: PP -MEncode -E '$ p = decode_json (encode_utf8 (<>)); $ p -> {NSHumanReadableCopyright}'); 큰 문제는 plutil + perl 자체만으로도 충분히 빠르다는 것입니다.) – JayB
@JayB 편집을 참조하십시오. 나를 위해 작동합니다. 괜찮습니다. – jm666