이 변수 확장하는 방법에 관한 감사드립니다. 변수가 하나 이상의 요소 (목록)를 포함하고 인수에 변수가 포함 된 경우 인수는 목록의 각 요소에 대해 별도로으로 확장됩니다.
예를 들어
: 그래서 샘플 코드에서
> set vals 1 2 3
> echo item_$vals
item_1 item_2 item_3
: 이것은 $로 TEST1 함수를 호출
test1 ci -m "test1 str2"
는 세 가지 요소의 목록으로 설정 ARGV : ci
, -m
및 test2 str2
.
echo argv: $argv
스페이스 별도의 인수, 텍스트, 그래서 argv: $argv
는 두 개의 분리 된 (확장되지 않은) 인수가 포함되어 있습니다. 그들은 별도로 확장됩니다. 두 번째 경우 지금
:
echo argv:$argv
단지 하나 (팽창) 인수하므로 argv:$argv
가 공백이없는 텍스트.
argv:$argv
→ argv:{ci, -m, test2 str}
→ argv:ci argv:-m argv:test2 str
그 인수 후 에코 전달됩니다 따라서 물고기는 별도로 세 개의 인수를 산출, 목록에있는 모든 요소의 텍스트를 확장합니다.
이 확장 동작을 원하지 않으면 큰 따옴표를 사용하면 항상 단일 인수가됩니다. 큰 따옴표에서는 목록 변수가 공백을 사용하여 결합됩니다.
> set vals 1 2 3
> echo "item_$vals"
item_1 2 3
따옴표 붙은 문자열은 공백을 포함하여 단일 인수로 확장됩니다.
완성도를 들어, 작은 따옴표는 완전히 변수 확장을 패배 :
> set vals 1 2 3
> echo 'item_$vals'
item_$vals
인용 부호로 둘러싸이지 않은 그룹 확장 행동 패턴을 구성하는 데 유용합니다. file5.txt을 통해은 File2.txt의 목록을 생성하려면 : 물건을 지 웁니다
> echo file(seq 5).txt
file1.txt file2.txt file3.txt file4.txt file5.txt
희망을.