![echoを使用して各コマンドパラメータをどのように印刷しますか? [コピー]](https://linux33.com/image/156525/echo%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E5%90%84%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%82%92%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%8D%B0%E5%88%B7%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
~によるとこの回答...
コマンドはパラメータと呼ばれる文字列配列に分割されます。パラメーター0は(通常)コマンド名で、パラメーター1はコマンドの後の最初の要素です。
$ ls -la /tmp /var/tmp arg0 = ls arg1 = -la arg2 = /tmp arg3 = /var/tmp
各パラメータを出力できますか?エコを使って表現しましょう。
コマンドを実行した後とを使用しましたが、echo $@
実際には機能しません。echo $0 $1 $2 $3
ls -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と呼びました。「エコ」と呼んではいけません。)