명령 이름이 변수에 있는 명령문을 실행하려고 합니다. 예를 들어:
my_command='/path/to/some/command'
$my_command -f foo -b bar -s something else
하지만 위의 방법은 효과가 없습니다. 내가 받은 오류는 쉘이 내 인수를 명령으로 해석하려고 시도하고 있음을 나타냅니다.
Bash와 Zsh에서 이 작업을 어떻게 수행합니까?
답변1
명령을 저장하려면 다음 함수를 사용할 수 있습니다.
그러나 Bourne과 유사한 쉘에서는 다음과 같습니다 bash
.
mycommand() /path/to/some/command some fixed args "$@"
mycommand other args
bash
중괄호가 필요합니다 .
mycommand() { /path/to/some/command some fixed args "$@";}
(이 마운트는 다른 경우에는 손상되지 않으므로 휴대성이 필요할 때 사용하는 것이 가장 좋습니다)
당신이 중독자 인 경우 csh
에도 사용할 수 있습니다 alias
.
다음과 같은 변수를 사용할 수 있습니다.
mycommand=/path/to/some/command
그러나 다음을 제외한 모든 쉘에서 zsh
인용 확장이 필요하다는 점을 기억하십시오.
"$mycommand" its args
명령과 0번째 이상의 인수를 저장하려면 해당 명령을 지원하는 셸에서 배열을 사용할 수 있습니다 bash
.zsh
mycommand=(/path/to/some/command some fixed args)
"${mycommand[@]}" some other args
zsh
당신이 없애기 전에
$mycommand some other args
없는 한고정 매개변수비었다.
답변2
bash에서는 다음 줄이 작동합니다.
mycommand=/usr/bin/find
$mycommand -type d
문제는 "/path/to/some/command"와 그것이 수행하거나 시도하는 작업에서 비롯될 수 있습니다. 실물을 보지 않고서는 말씀드리기 어렵습니다.