Bashで変数を別のプログラム($ *または$ @)に渡す最も安全な方法は何ですか? [コピー]

Bashで変数を別のプログラム($ *または$ @)に渡す最も安全な方法は何ですか? [コピー]

誰かがこれら2つの変数の違いを簡潔に説明できますか?

変数を他のプログラムに渡す最も安全な方法は何ですか?

例えば

#! /bin/bash

# do stuff

# pass variables onto another program
java $@

ベストアンサー1

次のスクリプトを使用してください。

#! /bin/sh
# Greg Wooledge's args script
printf "%d args:" $#
printf " <%s>" "$@"
echo

このデモを試してください。

$ set -- a 'b     c' d
$ args $*
4 args: <a> <b> <c> <d>
$ args $@
4 args: <a> <b> <c> <d>
$ args "$*"
1 args: <a b     c d>
$ args "$@"
3 args: <a> <b     c> <d>

通常(引用符を含む)を使用する必要があります"$@"

時には、IFS以下を変更して使用するのが便利です"$*"

$ saveIFS=$IFS; IFS='|'; args "$*"; IFS=$saveIFS
1 args: <a|b     c|d>

おすすめ記事