키와 매개변수를 지정해야 하는 bash 스크립트가 있습니다. 별칭을 사용하여 명령을 만들었습니다.
alias command="pushd /path; ./somescript.sh; popd"
스크립트 작업이 완료되면 스크립트가 호출된 디렉터리로 돌아가야 합니다.
하지만 오류가 발생합니다.
bash: popd: -o: invalid number
popd: using: popd [-n] [+N | -N]
내 시스템의 언어가 영어가 아닙니다. 원본과 다르게 보이면 죄송합니다. 어떻게 해야 합니까?
답변1
이것은 잘 작동합니다:
$ alias foo="pushd /; ls -ld ./tmp; popd"
$ foo
/ ~
drwxrwxrwt 12 root root 4096 Dec 25 19:30 ./tmp/
~
그러나 별칭이 지정된 중간 명령에 매개변수를 전달해야 하는 경우 함수를 사용해야 합니다. 그렇지 않으면 매개변수가 별칭 끝에 추가되어 매개변수 역할을 합니다 popd
.
대신 이렇게 하세요:
something() {
pushd /path > /dev/null
./somescript.sh "$@"
popd > /dev/null
}
something -o blahblah
별칭/함수 로 사용된 이름 command
은 호출하기에 가장 좋은 이름이 아닐 수 있습니다. 이는 외부 명령을 호출하는 데 사용되는 쉘 내장이며 동일한 이름을 가진 함수를 건너뜁니다.