예:
VARIABLE1="/foo/bar"
VARIABLE2="/some/other/path"
# etc you don't know how many variables there is, maybe 3 maybe 30.
# Then :
randomfunction $VARIABLE1 $VARIABLE2 #... <- How do I replace this to something that would include every variable starting with name "VARIABLE"
편집하다
오해가 있는 부분이 있어서 다른 말로 표현하겠습니다.
어떻게 만드나요?
VAR1="foo"
VAR2="bar"
VAR3="job"
출력은 다음과 같습니다
"foo bar job"
VAR 개수를 모르면 VAR4, VAR5 등이 있을 수 있습니다.
답변1
인수 없이 명령을 실행하면 set
세션에 대해 설정된 모든 변수와 함수가 출력됩니다. 이를 염두에 두고 변수를 필터링한 다음 원하는 "문자열"에서 배열에 할당한 다음 배열을 전달합니다. 함수.
ALL_VARIABLES=( $(set | grep -Ea '^VARIABLE.*=' | cut -d = -f 2) )
randomfunction "${ALL_VARIABLES[@]}"
기본적으로 문자와 등호로 시작하는 모든 줄의 출력을 얻은 다음 set
이를 개별 이름과 값에 전달하고 모든 값을 배열에 할당한 다음 확장하여 매개 변수로 전달합니다.grep
VARIABLE
cut
ALL_VARIABLES
randomfunction
답변2
배열을 사용하고 배열을 함수에 전달할 수 있습니다.
#!/bin/bash
Variable=(/tmp /tmp/a.txt /tmp/b.txt)
function Test(){
Values=("$@")
echo "${Values[0]}"
echo "${Values[1]}"
echo "${Values[2]}"
}
echo "${Variable[0]}"
echo "${Variable[1]}"
echo "${Variable[2]}"
echo "${Variable[@]}"
#Call the Test function and pass the array
Test "${Variable[@]}"