고쳐 쓰다
이 질문에는 이미 답변이 있습니다.: ...
Bash 스크립팅에서 내가 겪은 어려운 일 중 하나는 변수 확장을 재귀적으로 사용하는 것입니다. 그러나 저는 [ChatGPT를 통해] 위치 매개변수 값을 참조하기 위해 간접 대체를 사용할 수 있다는 사실을 발견했습니다. linkerArgs+=("${!i}") 그러나 문자열 대체를 사용하면 논리적으로 확장을 재귀적으로 사용할 수 있습니다. "${x// /$newChar}" bash 인터프리터가 배열에 항목을 할당하는 맥락에서 사용될 때 후자 유형의 확장(괄호 안의 달러 기호만)을 "잘못된 대체"로 ...
설명하다: variable="Something that it holds" 그런 다음 echo "$variable"출력됩니다: 그것이 담고 있는 내용 하지만 나도 그렇다고 가정해 보세요. var2="variable"; echo "\$$(echo $var2)" $variable 대신에: 무엇을 담고 있는지 만 출력합니다. 여기에서 Unix의 어떤 기능이 작동하는지 말해 줄 수 있는 사람이 있나요? ...
다음과 같은 간접적인 작업을 수행하려고 합니다. host_1=(192.168.0.100 user1 pass1) host_2=(192.168.0.101 user2 pass2) hostlist=( "host_1" "host_2" ) for item in ${hostlist[@]}; do current_host_ip=${!item[0]} current_host_user=${!item[1]} current_host_pass=${!item[2]} echo "IP: $current_host_ip User...
따라서 다음과 같이 간접 확장을 통해 일반 매개변수의 존재 여부를 테스트할 수 있다는 것을 알고 있습니다. foo=1 bar=foo (( ${(P)+bar} )) && print "$bar exists" 다음을 수행하여 연관 배열에 키가 존재하는지 테스트할 수 있다는 것을 알고 있습니다. foo=([abc]=1) (( ${+foo[abc]} )) && print "abc exists" 그러나 두 가지를 결합하고 간접 확장을 통해 키가 연관 배열에 존재하는지 테스...
Bash에서는 두 가지 방법으로 가변 간접 확장을 수행할 수 있다는 것을 알고 있습니다. 사용 declare:declare -n foo=bar 확장 기능을 사용하세요 ${!..}. 우리는 두 가지를 결합할 수 있습니다: declare -n foo=SHELL bar=foo echo ${!bar} 다음을 제공합니다: /bin/bash 더 많은 수준으로 확장할 수 있나요? 대부분은 난독화된 코드를 작성하는 것에 관한 것입니다. 내 친구들 중 몇몇은 이를 하려고 서로 도전하고 있습니다...
인덱스와 잘 작동하는 것처럼 보이는 다음 예를 살펴보세요 0. $ a1=(1 2 3) $ a2=(a b c) $ for x in a1 a2; do echo "${!x}"; done 1 a $ for x in a1 a2; do echo "${!x[0]}"; done 1 a 그러나 인덱싱을 사용하면 1아무것도 인쇄되지 않습니다. $ for x in a1 a2; do echo "${!x[1]}"; done 배열은 그 자체로 괜찮습니다. $ echo "${a1[1]} ${a2[1]}" 2...
#!/bin/bash mat_1=(ServerAB ServerFR ServerPE ServerAM ServerHU) st="mat_1"; indirect_var='${'${st}'[@]}' #(Please, see the "--Desired Ouput Section--" in comments) #----- What is Hapenning now at output ---- echo Values of "mat_1 ": ${mat_1[@]} echo Indirect value of "mat_1": ${...