echoを使用して各コマンドパラメータをどのように印刷しますか? [コピー]

echoを使用して各コマンドパラメータをどのように印刷しますか? [コピー]

~によるとこの回答...

コマンドはパラメータと呼ばれる文字列配列に分割されます。パラメーター0は(通常)コマンド名で、パラメーター1はコマンドの後の最初の要素です。

$ ls -la /tmp /var/tmp
arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp

各パラメータを出力できますか?エコを使って表現しましょう。

コマンドを実行した後とを使用しましたが、echo $@実際には機能しません。echo $0 $1 $2 $3ls -la /tmp /var/tmp

私もこれを試しましたが、うまく> /dev/nullいきませんでした。 (下記と同じ結果が出ます)

user@linux:~$ ls -la /tmp /var/tmp > /dev/null 
user@linux:~$ echo $@

user@linux:~$ 

user@linux:~$ ls -la /tmp /var/tmp > /dev/null 
user@linux:~$ echo $0
bash
user@linux:~$ 

user@linux:~$ ls -la /tmp /var/tmp > /dev/null 
user@linux:~$ echo $1

user@linux:~$ 

user@linux:~$ ls -la /tmp /var/tmp > /dev/null 
user@linux:~$ echo $0 $1 $2 $3
bash
user@linux:~$ 

希望の出力

実行後、端末画面に次の出力が表示されることが予想されます。ls -la /tmp /var/tmp

入力する

ls -la /tmp /var/tmp

出力

arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp

ベストアンサー1

echo $ 0はあなたの例から「bash」を出力します。シェルにいるときにbashが実行されているので、これは本当です。

アクセスしようとしているパラメータがコマンドに提供されましたls。返され、プロンプトが表示されたら、パラメータは消えます。

次の行を含むファイル(「スクリプト」)を作成した後

echo $0 $1 $2

ソーシングを通じて呼び出します。

. myecho.cmd a b c d 

...あなたは以下を得ます:

bash a b

実行可能にした後(パスディレクトリに#!最初の行、chmod、cpを追加)、直接呼び出すことができます。

myecho.cmd a b c d

$ 0は新しいコマンドの名前です。

/usr/local/bin/myecho.cmd a b 

(目立つように.cmdと呼びました。「エコ」と呼んではいけません。)

おすすめ記事