[解決済み] bashのコマンドライン引数へのアクセス $@ vs $*
2022-03-24 19:02:14
質問
多くのSO質問とbashチュートリアルでは、私はbashスクリプトでコマンドラインの引数に2つの方法でアクセスすることができると見ています。
$ ~ >cat testargs.sh
#!/bin/bash
echo "you passed me" $*
echo "you passed me" $@
という結果になる。
$ ~> bash testargs.sh arg1 arg2
you passed me arg1 arg2
you passed me arg1 arg2
とはどのような違いがあるのでしょうか?
$*
と
$@
?
前者はどのような場合に使用し、後者はどのような場合に使用するのでしょうか。
どのように解決するのですか?
この違いは、特殊なパラメータを引用したときに現れます。その違いを説明しましょう。
$ set -- "arg 1" "arg 2" "arg 3"
$ for word in $*; do echo "$word"; done
arg
1
arg
2
arg
3
$ for word in $@; do echo "$word"; done
arg
1
arg
2
arg
3
$ for word in "$*"; do echo "$word"; done
arg 1 arg 2 arg 3
$ for word in "$@"; do echo "$word"; done
arg 1
arg 2
arg 3
引用の重要性に関するもう一つの例: "arg"と数字の間には2つのスペースがありますが、$wordを引用しなかった場合、$quot;arg"と数字の間には2つのスペースがあることに注意してください。
$ for word in "$@"; do echo $word; done
arg 1
arg 2
arg 3
で、bashでは
"$@"
は反復処理するための "default"リストです。
$ for word; do echo "$word"; done
arg 1
arg 2
arg 3
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「ambiguous redirect」エラーが発生する
-
[解決済み】ZIPエラー - 何もできない
-
[解決済み] MacOSのbashターミナルでexport PS1="\u[\033[m]@[\033[32m]\h:\[\033[33;1m]\w[\033[m]\$" は何を意味していますか?
-
[解決済み] Cp: ターゲットはディレクトリではありません
-
[解決済み] Bashで$()と`の違いはあるのでしょうか?重複] [重複
-
[解決済み] zip警告 - 名前が一致しない
-
[解決済み] openstack の google-chrome-stable ubuntu12 パッケージが見つかりません。
-
[解決済み] あいまいなリダイレクト」エラーが発生する
-
[解決済み] ConcatenationとAppendの違いについて【終了しました
-
[解決済み] bashシェルスクリプトの全引数を伝搬させる