コマンドライン引数を読んでみる

投稿者: | 2015年6月26日
2016年11月3日追記

Swift3になってNSProcessInfoを使ったコマンドラインパラメータの取得ができなくなりましたが、CommandLineというそのものずばりのデータを読むことで実行ファイルと引数を配列として取得することができます。

さらに改善されたのは、コンパイル後のファイルだけでなくSwiftにスクリプトとして読み込ませて実行した場合でもスクリプトファイル自身が実行ファイル名として扱われるようになりました。

12ヶ月表示のプログラム3ヶ月表示のものとほとんど同じコードでした。であれば、動作オプションを読み込んで-3のときは3ヶ月表示、-yのときは12ヶ月表示にできるとそれっぽいです。

パスを含む実行ファイル名とその引数を得るコードは以下のようになります。

#! /usr/bin/swift
import Foundation
let arguments: [String] = CommandLine.arguments
print(arguments)

CommandLineを使うと実行ファイル名と引数を文字列の配列として得ることができます。

$ ./args.swift test
["./args.swift", "test"]
$ ./args test
["./args", "test"]
$ /Users/takeru/swift/args test
["/Users/takeru/swift/args", "test"]

相対パス指定で実行した場合、パス名の補完がされませんね。