LPIC問題:253-256

LPIC練習問題

問題253:メタキャラクタ , ?, [] を組み合わせて指定したファイル名でマッチするファイル名を選択してください。次の a[bc]?.txt にマッチするファイル名はどれですか?

A) abc1.txt
B) acb12.txt
C) ab12.txt
D) acc.txt

解答解説を開く
正解) A, C

【解説】
A) abc1.txt は正解です。
a → ファイル名の先頭が a に一致しています。
[bc] → 2文字目は b または c にマッチする必要があります。ここでは b に一致しています。
* → 任意の文字列を0文字以上含むことが許されます。ここでは c にマッチしています。
? → 1文字にマッチします。ここでは 1 にマッチしています。
.txt → 拡張子 .txt がそのまま一致しています。
B) acb12.txt は誤りです。[bc] の範囲により、2文字目は b または c ですが、順序が逆になっているため、マッチしません。
C) ab12.txt が正解です。 [bc] は b にマッチし、* は任意の文字列 1 にマッチし、? は 2 にマッチしています。
D) acc.txt は誤りです。? に相当する文字がなく、条件を満たしていません。

問題254:次のシェルスクリプトの意味を選択してください。
#!/bin/bash
for i in $(seq 1 5); do
  echo "Number: $i"
done

A) 1から5までの数を順に表示する。
B) 5から1までの数を順に表示する。
C) 無限ループになる。
D) seq コマンドが存在しないためエラーが発生する。

解答解説を開く
正解) A

【解説】
A) 1から5までの数を順に表示する。 が正解です。 $(seq 1 5) は1から5までの数を生成し、for ループによって順に表示されます。
B) 5から1までの数を順に表示する。 は誤りです。seq 1 5 は1から5までの増加順の数を生成します。
C) 無限ループになる。 は誤りです。このスクリプトは5回実行されて終了します。
D) seq コマンドが存在しないためエラーが発生する。 は誤りです。seq は標準的なコマンドで、正常に動作します。

問題255:次のシェルスクリプトを実行した場合、出力される内容を選択してください。
#!/bin/bash
for i in a b c; do
  echo $i
done

A) a
B) a b c
C) a
b
c
D) abc

解答解説を開く
正解) C

【解説】
A) a は誤りです。ループは一度だけ実行されるわけではなく、3回実行されます。
B) a b c は誤りです。各変数は新しい行に出力されます。
C) a
b
c が正解です。 for ループにより、各文字が順に変数 i に割り当てられ、1行ずつ表示されます。
D) abc は誤りです。すべての変数が連続して表示されることはありません。

問題256:シングルクォーテーションとダブルクォーテーションの違いを答える問題です。次のシェルスクリプトの出力は何ですか?
#!/bin/bash
variable="World"
echo 'Hello, $variable'
echo "Hello, $variable"

A) Hello, $variable と Hello, World
B) Hello, World と Hello, $variable
C) $variable と World
D) World と $variable

解答解説を開く
正解) A

【解説】
A) Hello, $variable と Hello, World が正解です。 シングルクォーテーションでは変数展開が行われず、そのまま表示されますが、ダブルクォーテーションでは変数展開が行われます。
B) Hello, World と Hello, $variable は誤りです。シングルクォーテーションでは変数展開が行われないため、逆の出力になります。
C) $variable と World は誤りです。Hello が含まれていないため、正しい出力ではありません。
D) World と $variable は誤りです。シングルクォーテーションの方で $variable がそのまま表示されるため、逆の出力です。