引用符とパーセントを含むbash変数

引用符とパーセントを含むbash変数

スクリプトで時間コマンドを使用し、それを変数に入れて(多くのコマンドで使用する必要がある)、単一の変数のみを変更できるようにしたいと思います。

簡単に言えば、これが私が試したことです。

PROFILING="/usr/bin/time -f 'time: %e - cpu: %P'" ; $PROFILING ls /usr

次のように翻訳したいと思います。

# /usr/bin/time -f 'time: %e - cpu: %P' ls /usr
bin  games  include  lib  local  sbin  share  src
time: 0.00 - cpu: 0%

しかし、私はこれを得ます:

/usr/bin/time: cannot run %e: No such file or directory
Command exited with non-zero status 127
'time:

どんな提案がありますか?

ありがとう

答え1

ワードセパレータは拡張変数の引用符を認識しません。代わりに配列を使用してください。

profiling=(/usr/bin/time -f 'time: %e - cpu: %P')
"${profiling[@]}" ls /usr

またはalias:

shopt -s expand_aliases # needed in scripts
alias profiling="/usr/bin/time -f 'time: %e - cpu: %P'"
profiling ls /usr

または機能:

profiling() { /usr/bin/time -f 'time: %e - cpu: %P' "$@"; }
profiling ls /usr

関連情報