Swiftスクリプト(swift shebang)とコマンドラインツール
shebang 付きで実行可能なSwiftスクリプトを作成し、 CommandLine.arguments を読み取り、ヘルプを表示して、適切なステータスコードで終了します。
「Swiftスクリプト(swift shebang)とコマンドラインツール」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン1/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全3レッスンが含まれています。
Swiftスクリプトを使う理由
Swiftはスクリプト言語として利用できます。shebangを使ってファイルを直接実行し、CommandLine.argumentsを解析し、自動化のためにステータスコードで終了します。
Shebangの基本
1行目に#!/usr/bin/env swiftを追加し、ファイルを実行可能にして、シェルスクリプトと同じように実行します。
// First line (shebang) when saved to a file:
// #!/usr/bin/env swift
// Then mark file executable: chmod +x tool.swift
// Run directly: ./tool.swift
print("Hello from a Swift script!")引数の解析
入力値を読み取るにはCommandLine.argumentsを使います。必要なパラメーターが不足している場合は、短いUsageメッセージを表示してください。
// Parse arguments: CommandLine.arguments[0] is the script path.
let args = CommandLine.arguments.dropFirst() // ignore script name
if args.isEmpty {
print("Usage: greet.swift <name>")
} else {
let name = args[args.startIndex]
print("Hello, \\(name)!")
}小さなオプション
依存関係なしで小さなフラグを実装します。ヘルプは明確にしてください:--help、--times N、--shout。
// Very small options parser: --shout and --times
struct Options {
var shout = false
var times = 1
var rest: [String] = []
}
func parse(_ raw: ArraySlice<String>) -> Options {
var o = Options()
var it = raw.makeIterator()
while let token = it.next() {
switch token {
case "--help", "-h":
print("Usage: echo.swift [--shout] [--times N] <text>")
exit(0)
case "--shout":
o.shout = true
case "--times":
if let nStr = it.next(), let n = Int(nStr), n > 0 { o.times = n }
default:
o.rest.append(token)
}
}
return o
}
let options = parse(CommandLine.arguments.dropFirst())
let text = options.rest.joined(separator: " ").isEmpty ? "echo" : options.rest.joined(separator: " ")
let output = options.shout ? text.uppercased() : text
for _ in 0..<options.times { print(output) }終了ステータス
成功時にはexit(0)を使い、失敗時には0以外の値を使います。シェルパイプラインのために、エラーはstderrに出力してください。
import Foundation
enum CLIError: Error { case invalidInput }
func validateNumber(_ s: String) throws -> Int {
guard let n = Int(s) else { throw CLIError.invalidInput }
return n
}
let args2 = CommandLine.arguments.dropFirst()
do {
guard let first = args2.first else {
print("Usage: num.swift <int>"); exit(64) // EX_USAGE
}
let n = try validateNumber(first)
print("ok:", n)
exit(0)
} catch {
fputs("error: \\(error)\\n", stderr)
exit(1)
}コンパイルと配布
配布用にはswiftcでコンパイルしてバイナリを作成します。大規模なCLIではSwiftPMに移行し、swift runを使います。
// You can compile a single-file tool:
// swiftc tool.swift -o tool
// ./tool --help
print("Tip: use swiftc to build a tiny binary; for multi-file CLIs prefer SwiftPM (swift package init).")Shebangの目的
確認問題:shebangによって何が可能になりますか?
まとめ
まとめ:shebangを追加し、CommandLine.argumentsを読み取り、Usageを表示して、適切な終了コードで終了します。swiftcでコンパイルするか、大きなツールではSwiftPMに移行してください。
AI チューターと学ぶ Swift — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 122
- レッスン
- 409
よくある質問
「Swiftスクリプト(swift shebang)とコマンドラインツール」レッスンは無料ですか?
はい。「Swiftスクリプト(swift shebang)とコマンドラインツール」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全3レッスンが含まれています。
「Swiftスクリプト(swift shebang)とコマンドラインツール」で何を学びますか?
shebang 付きで実行可能なSwiftスクリプトを作成し、 CommandLine.arguments を読み取り、ヘルプを表示して、適切なステータスコードで終了します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/3です。
「Swiftスクリプト(swift shebang)とコマンドラインツール」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Swiftスクリプト(swift shebang)とコマンドラインツール
- C/Obj-C相互運用の概要(iOS固有の内容なし)
- SPMでバイナリをパッケージ化する