Linuxとコマンドラインの基礎
$ cat s.sh
#!/bin/bash
echo "$# $1"
$ ./s.sh a "b c" d上のように、スクリプト s.sh を引数を付けて実行したときの出力として、正しいものはどれか。
- A3 ./s.sh
- B3 a
- C4 a
答えと解説を見る
正解:B. 3 a
スクリプトの中では、$1、$2 … が1番目、2番目の引数、$# が引数の数、$0 がスクリプト自身の名前を表します。"b c" は二重引用符で囲まれているので、空白を含んだ1つの引数になり、引数は a、b c、d の3つです。そのため $# は3、$1 は a で、出力は 3 a になります。すべての引数を、区切りを保ったまま別のコマンドに渡すときは "$@" と書きます。
- A. スクリプトの名前は $0 で、$1 は1番目の引数の a です。
- B. 正しい。引数は a、b c、d の3つで、1番目は a です。
- C. 引用符で囲んだ "b c" は1つの引数になるので、引数の数は4ではなく3です。