따옴표와 백분율이 포함된 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

관련 정보