따옴표를 잃지 않고 bash에서 입력 문자열을 받아들이는 방법은 무엇입니까?

따옴표를 잃지 않고 bash에서 입력 문자열을 받아들이는 방법은 무엇입니까?

예를 들어, 내 .profile에 다음 기능이 있습니다.

alias () {
    command alias "$@"
}

그러나 이는 다음을 수행합니다.

$ alias test=ls

내가 달리면 $ alias test="ls"

인용된 문자열을 허용하도록 하려면 어떻게 해야 합니까?

답변1

명령줄의 큰따옴표는 파서에서 사용됩니다. 함수를 호출할 때 전체 별칭 표현식을 작은따옴표로 묶거나 백슬래시로 각 큰따옴표를 이스케이프해야 합니다(또는 이스케이프 표시와 따옴표 표시를 혼합). 그러므로:

alias foo='echo "hi there"'
alias bar="echo "\"hi\ there\"

별칭 오른쪽에 공백을 포함할 수 있도록 별칭을 재정의하려는 경우 다음을 사용해야 합니다.

command alias "$*"

차이점은 이 버전은 다음과 같이 공백(IFS의 첫 번째 문자)으로 구분된 모든 위치 매개변수를 확장한다는 것입니다 alias.

alias foo=echo over here

관련 정보