面白げな記事を見つけました。
新・OS X ハッキング! (166) 開発者でなくても「Swift」は便利に使える | マイナビニュース
#!/usr/bin/swift
で swift が起動するというのです。
試してみる。Xcode は入っているので、ターミナルから試してみます。
バージョン確認
takuya@Desktop$ swift --version Apple Swift version 3.0.1 (swiftlang-800.0.58.6 clang-800.0.42.1) Target: x86_64-apple-macosx10.9 takuya@Desktop$
Macで実行してみる
シェルスクリプトとしてSwift を実行してみる。sample.swift ファイルつくって shebang いれて、実行権限をいれる感じですね。
ファイル作って
sample01.swift
#!/usr/bin/swift import Foundation let task = Process() task.launchPath = "/usr/bin/find" task.arguments = ["."] task.launch() task.waitUntilExit()
chmod して
chmod a+x ./sample01.swift
実行
takuya@~$ cd .Trash/ takuya@.Trash$ ~/Desktop/sample01.swift . ./89-09kotudoro.xls
おおお /usr/bin/find
が実行された。 これはシェルスクリプトの代替に python や ruby 使わなくて幸せに慣れそう。node / swift で書くことが出来る。やったね。
どうせならLinuxでも動かしてみる
うちの Debian jessie で swift を動かしてみる。
実験した環境
takuya@:swift$ cat /etc/debian_version 8.6 takuya@:swift$ lsb_release -a LSB Version: core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:core-4.1-amd64:core-4.1-noarch:cxx-3.0-amd64:cxx-3.0-noarch:cxx-3.1-amd64:cxx-3.1-noarch:cxx-3.2-amd64:cxx-3.2-noarch:cxx-4.0-amd64:cxx-4.0-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-3.1-amd64:desktop-3.1-noarch:desktop-3.2-amd64:desktop-3.2-noarch:desktop-4.0-amd64:desktop-4.0-noarch:desktop-4.1-amd64:desktop-4.1-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.0-amd64:graphics-3.0-noarch:graphics-3.1-amd64:graphics-3.1-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0-amd64:graphics-4.0-noarch:graphics-4.1-amd64:graphics-4.1-noarch:languages-3.2-amd64:languages-3.2-noarch:languages-4.0-amd64:languages-4.0-noarch:languages-4.1-amd64:languages-4.1-noarch:multimedia-3.2-amd64:multimedia-3.2-noarch:multimedia-4.0-amd64:multimedia-4.0-noarch:multimedia-4.1-amd64:multimedia-4.1-noarch:printing-3.2-amd64:printing-3.2-noarch:printing-4.0-amd64:printing-4.0-noarch:printing-4.1-amd64:printing-4.1-noarch:qt4-3.1-amd64:qt4-3.1-noarch:security-4.0-amd64:security-4.0-noarch:security-4.1-amd64:security-4.1-noarch Distributor ID: Debian Description: Debian GNU/Linux 8.6 (jessie) Release: 8.6 Codename: jessie
公式サーバーから swift を持ってくる
ubuntu 14 のものが動いた
wget https://swift.org/builds/swift-3.0.2-release/ubuntu1404/swift-3.0.2-RELEASE/swift-3.0.2-RELEASE-ubuntu14.04.tar.gz \ | tar zxvf -
REPL でコマンドラインを起動する
Linuxで動きそうなので、せっかくなので対話インターフェースで起動してみる。
./swift-3.0.2-RELEASE-ubuntu14.04/usr/bin/swift
動かす
takuya@:swift$ ./swift-3.0.2-RELEASE-ubuntu14.04/usr/bin/swift Welcome to Swift version 3.0.2 (swift-3.0.2-RELEASE). Type :help for assistance. 1> import Foundation 2> print("Hello Swift Linux") Hello Swift Linux 3>
ええ。。。Foundationもあるの。カーソルで戻るなどで若干改行がおかしくなったりするけど問題なさそう。
スクリプトとして実行してみる
ファイル作って
takuya@:swift$ cat - > sample.swift #!/home/takuya/swift/swift-3.0.2-RELEASE-ubuntu14.04/usr/bin/swift import Foundation let filelist = Task() filelist.launchPath = "/bin/sh" filelist.arguments = ["-c", "ls -lS ./"] filelist.launch() filelist.waitUntilExit()
実行権限をつけて
takuya@:swift$ chmod 755 sample.swift
実行した
takuya@:swift$ ./sample.swift 合計 115764 -rw-rw-r-- 1 takuya takuya 118528337 12月 14 10:49 swift-3.0.2-RELEASE-ubuntu14.04.tar.gz drwxrwxr-x 3 takuya takuya 4096 3月 3 16:12 swift-3.0.2-RELEASE-ubuntu14.04 -rwxr-xr-x 1 takuya takuya 226 3月 3 16:34 sample.swift -rw-rw-r-- 1 takuya takuya 177 3月 3 16:17 test.swift
ちょっと面食らうのが NSTask
が Process
でもなく Task
だったところかな。
面白い
ちょっとしたシェルスクリプトのファイル操作なども swift
で書くことが出来る。プログラミング言語として整ってるので期待したい。Swiftのちょっとしたコードをぱぱっと試せるのは便利ですね。関数の使い方をちょっと試すのに便利そう。内部でコンパイルしてるんだろうけど、、、、