自作のLinuxコマンドで引数を使う

Linuxコマンドを自作しながら学ぶで作成したsayコマンドに引数の機能を加えて、様々な文字列を出力できるようにします。


引数を理解するためにsayコマンド用のファイルを変更します。

/home/pi/say.go

※上記のパスはアカウント名がpiの場合になります。

package main

import (
	"fmt"
	"os"
)

func main() {
	// 引数の数を調べる
	fmt.Printf("length=%d\n", len(os.Args))

	// 各引数の値を出力する
	for _, v := range os.Args {
		fmt.Println(v)
	}
}

下記の処理でsayの実行ファイルを作成して、動作を確認してみます。

$ go build say.go
$ ./say hoge huga

length=3
./say
hoge
huga

のような結果になりました。


一番目の値は実行したコマンド、二番目からはsayの後にスペース区切りで追加した値が出力されました。


これを参考にして、コードを書き換えてみます。

/home/pi/say.go

package main

import (
	"fmt"
	"os"
)

func main() {
	if len(os.Args) == 2 {
		fmt.Println(os.Args[1])
	} else {
		fmt.Println("error")
	}
}

$ go build say.go
$ sudo mv say /usr/local/bin/

でsayのみで実行できるようにして、下記コマンドで動作を確認してみまる。

$ say hoga

hoge

と出力され、

$ say

error

と出力されることを確認しましょう。

マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。