Linuxとコマンドラインの基礎

$ cat s.sh
#!/bin/bash
echo "$# $1"
$ ./s.sh a "b c" d

上のように、スクリプト s.sh を引数を付けて実行したときの出力として、正しいものはどれか。

  1. A3 ./s.sh
  2. B3 a
  3. 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です。
この分野を解く 分野ページへ

Linuxとコマンドラインの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

Linuxとコマンドラインの基礎のほかの問題

  1. シェルスクリプトで、上の if の条件が真になる場合として、正しいものはどれか。
  2. 上の操作の後で、ディレクトリにあるファイルとして、正しいものはどれか。
  3. カレントディレクトリにある実行の権限が付いたスクリプト run.sh を、「run.sh」と入力して実行しようとすると「command not found」になり、「./run.sh」と入力すると実行できた。理由として、正しいものはどれか。
  4. 上のコマンドを順に実行したときの、2つの bash -c の出力の組み合わせとして、正しいものはどれか。
  5. Linuxのパッケージ管理システム(Debian系の apt、Red Hat系の dnf など)の主な働きとして、正しいものはどれか。