私はLPIC1、試験102を準備しています。この質問が私の前に現れ、私は完全にパニックになりました。初めてクイズを解く当時はこの事実を知っていましたが、一ヶ月半が過ぎた今はすべてが頭の中で曇っています。
何ですか
出力?function a { echo $1; } ; a a b c
Aa
B.abc
タクシー
D.aabc
私は「script」というファイルを生成してこの機能を再現しようとしました。
function a { echo $1;
};
a a b c
保存して実行権限を付与して試してみてください。
$ bash script
a
$
では正解はAなのになぜそうなのでしょうか?;
afterを追加する必要がありますか$1
? 2番目はどのような用途;
に使用されますか?誰かがこのスクリプトの構文を説明できますか?
答え1
これらのコマンドはコマンドラインから実行する必要があります。たとえば、次のようになります。
function a { echo $1; } ; a a b c
2番目のセミコロンはコマンドのリストを次
function a { echo $1; }
のように分割します。
a a b c
最初のコマンドは、最初の位置引数を反映する「a」という関数を生成します。関数内のコマンドのリストは末尾の
セミコロンで終わる必要がありますecho $1
。そうする改行文字がないからです。
(参照:man bash
-> 複合コマンド -> { list; } )2番目のコマンドは
a a b c
関数(fist a)を呼び出し、位置引数として "ab c"を関数に渡します。
関数は最初の位置引数だけをエコーするので、正解は「A」です。
答え2
a a b c
次のように翻訳command arg1 arg2 arg3
あなたがしなければならないのは、「a」であるa
最初の引数()を返す関数を定義することだけです。$1
セミコロンは、中かっこを使用してそのシェルでコマンドをグループ化する方法です。
{ commandA ; commandB ; commandC ; ... ; commandN ; }