예를 들어 여러 문자열을 입력으로 받아들이는 함수가 있다고 가정해 보겠습니다 ls
.
test 1
더 나아가 및 와 같이 공백이 있는 두 개의 폴더가 있습니다 test 2
.
전화하면 ls "test 1" "test 2"
ls
두 폴더의 내용이 모두 나열됩니다.
이제 나열하려는 폴더 자체가 다음과 같은 문자열에 있다고 가정해 보겠습니다 folders="\"test 1\" \"test 2\""
.
마지막으로 이 변수를 입력 매개변수로 사용하여 호출하고 싶습니다 ls
. 어떻게 해야 합니까? 나는 ls $folders
돌아오려고 노력했다:
ls: cannot access '"test': No such file or directory
ls: cannot access '1"': No such file or directory
ls: cannot access '"test': No such file or directory
ls: cannot access '2"': No such file or directory
즉, 따옴표가 문자열을 함께 유지해야 하는 경우에도 문자열을 별도의 인수로 분할합니다. 이 문제를 해결하기 위한 옵션은 무엇입니까? 사용하기 더 쉽다면 매개변수를 배열로 제공할 수 있습니다.
답변1
jesse_b가 언급했듯이 여기서는 배열을 사용해야 합니다. bash declare
명령은 매우 편리합니다.
folders="\"test 1\" \"test 2\"".
declare -a "dirs=($folders)"
declare -p dirs # inspect the variable
산출
declare -a dirs=([0]="test 1" [1]="test 2.")
다음과 같이 배열을 사용할 수 있습니다(따옴표가 중요합니다).
ls "${dirs[@]}"