web-dev-qa-db-ja.com

AppleScriptを使用してStdoutに印刷する

ターミナルからAppleScriptスクリプトを実行しようとしていますが、を呼び出しても何も印刷できません。

 osascript myFile.scpt "/path/to/a/file"

私はしようとしています:

on run fileName

set unique_songs to paragraphs of (read POSIX file fileName)

repeat with nextLine in unique_songs
    if length of nextLine is greater than 0 then
        set AppleScript's text item delimiters to tab
        set song to text item 2 of nextLine
        set artist to text item 3 of nextLine
        set album to text item 4 of nextLine

        set output to ("Song: " & song & " - " & artist & " - " & album)
        copy output to stdout
    end if
end repeat
end run

タブ区切りファイルは次のようにフォーマットされています。

1282622675  Beneath the Balcony Iron & Wine The Sea & the Rhythm    
1282622410  There Goes the Fear Doves   (500) Days of Summer        
1282622204  Go to Sleep. (Little Man Being Erased.) Radiohead   Hail to the Thief

タブは実際にはうまく表示されていません:(

18
kb_

ターミナルでどのように実行しようとしているのかは明確ではありません。ただし、AppleScriptテキストファイルを#!/usr/bin/osascriptShebang で保存し、ファイルを実行できるようにchmodしたと仮定します。

次に、ファイルへのパスを使用して、ターミナルでファイルを呼び出します。

#!/usr/bin/osascript

#Here be the rest of your code ...

set output to ("Song: " & song & " - " & artist & " - " & album)


    do Shell script "echo " & quoted form of output
end tell

Update2、コメントへの応答。

次のような内容のタブ区切りのテキストファイルがある場合:

track   Skin Deep   Beady Belle Closer

タブは次のように設定されます:track **** TAB **** Skin Deep **** TAB **** Beady Belle **** TAB **** Closer

そして、スクリプトファイルは次のとおりです。

on run fileName

    set unique_songs to paragraphs of (read POSIX file fileName)

    repeat with nextLine in unique_songs
        if length of nextLine is greater than 0 then
            set AppleScript's text item delimiters to tab
            set song to text item 2 of nextLine
            set artist to text item 3 of nextLine
            set album to text item 4 of nextLine

            set output to ("Song: " & song & " - " & artist & " - " & album)
            do Shell script "echo " & quoted form of output
        end if
    end repeat

end run

次に、ターミナルで実行します。

/usr/bin/osascript ~/Documents/testOsa2.scpt ~/Documents/testTab.txt

私は戻ってきます:

*Song: Skin Deep - Beady Belle - Closer*
8
markhunte

#!/usr/bin/osascriptを指定してAppleScriptを実行する場合、スクリプトの最後にあるreturnステートメントを使用して目的のテキスト出力を返すことができます。

15