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 $ ./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 $ sudo mv say /usr/local/bin/
でsayのみで実行できるようにして、下記コマンドで動作を確認してみまる。
$ say hoga
で
hoge
と出力され、
$ say
で
error
と出力されることを確認しましょう。