별명에 인수를 전달한 다음 해제


1

간단한 별칭을 만들려고합니다.

alias draw="pinta &> /dev/null & disown"

여기서 의도는 분명합니다. 내 문제는 인수를 전달할 때마다

bash: disown: file.jpg: no such job

파일이로드되지 않으면 pinta가 열립니다. 내 주장을 pinta에 전달한 다음 작업을 취소하려면 어떻게해야합니까?

편집하다:

다음과 같이 인수를 명시 적으로 전달하려고 시도했습니다.

alias draw="pinta $* &> /dev/null & disown"

그러나 나는 같은 결과를 얻는다


별명에는 인수를 전달할 수 없습니다. 별명은 대체 텍스트로 확장 된 다음 나머지 행이 추가됩니다 (인수, 방향 재 지정 등). 따라서 인수는 pinta가 아닌 disown 매개 변수로 전달됩니다 . 내부 $ * 는 무시됩니다 (널 문자열로 확장). 어떻게 작동하는지 보십시오 . cYrus가 제안한 함수를 사용하거나 스크립트를 작성할 수 있습니다. alias echo2="echo 1-$@-1 ; echo 2-$@-2"
AFH

답변:


3

대신 함수를 사용하십시오.

function draw {
    pinta "$@" &> /dev/null & disown
}

보너스 :"$@" 대신 사용해야 합니다 $*.

당신이 가지고 있다고 가정 :

function foo {
    echo "1: $1"
    echo "2: $2"
    echo "3: $3"
}

function bar {
    echo '$*'; foo $*
    echo '$@'; foo $@
    echo '"$*"'; foo "$*"
    echo '"$@"'; foo "$@"
}

그런 다음 시도하십시오.

bar "f o o" bar baz

오직 "$@"당신 과 함께 올바른 행동을 취하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.