他のプロセスを取り巻く単純なラッパーであるbashスクリプトがあります。
$ cat ~/bin/s3cmd
#!/bin/sh
trickle -u 80 ~/bin/s3cmd.py $*
$
これは、パラメータにスペースが含まれていない場合に便利です。ただし、s3cmd
引数がコマンドラインからエスケープされても、外部スクリプトに渡された引数にスペースが含まれるたびに失敗するようです。
すべての単一パラメータが正しく渡されるようにスペースをどのように証明しますかs3cmd.py
?
ベストアンサー1
使用"$@"
。
#!/bin/sh
trickle -u 80 ~/bin/s3cmd.py "$@"
暗黙の単語分割を実行するとき(ほとんど常に引用されていない場合)、$*
isとisの間に機能的な違いはありません。$@
しかし、引用された場合は、$*
の最初の文字で区切られた単一の文字列であり、実際のIFS
配列"$@"
(必要なもの)です。
$ set foo bar baz
$ IFS=c
$ printf '%s\n' "$@"
foo
bar
baz
$ printf '%s\n' "$*"
foocbarcbaz