![따옴표를 잃지 않고 bash에서 입력 문자열을 받아들이는 방법은 무엇입니까?](https://linux55.com/image/86767/%EB%94%B0%EC%98%B4%ED%91%9C%EB%A5%BC%20%EC%9E%83%EC%A7%80%20%EC%95%8A%EA%B3%A0%20bash%EC%97%90%EC%84%9C%20%EC%9E%85%EB%A0%A5%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EB%B0%9B%EC%95%84%EB%93%A4%EC%9D%B4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
예를 들어, 내 .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