변수에 문자열 유형을 강제로 적용하는 방법은 무엇입니까?

변수에 문자열 유형을 강제로 적용하는 방법은 무엇입니까?

이 스크립트가 있습니다.

#!/bin/bash
USERS=("user1.com" "user2.co.uk" "user3.com")
PASSES=("pass1" "pass2" "pass3")

for i in ${USERS[@]}; do
    echo ${PASSES[i]};
done

이 스크립트를 실행하면 다음이 출력됩니다.

my-script.sh: 6행: user1.com: 구문 오류: 잘못된 산술 연산자(오류 토큰은 ".com")

그러나 내 값은 따옴표로 묶여 있으며 내가 아는 한 echo산술 연산이 아닙니다.

PHP 배경에서 보면 이는 혼란스럽습니다. PHP에서는 다음을 수행할 수 있습니다.

echo gettype($string);
echo gettype($int);

출력

문자열
정수

그러나 인용문은 내가 생각하는 것처럼 보이지 않습니다. user1.com으로 처리하는 대신 문자열을 강제로 사용하려면 어떻게 해야 합니까 user1 . com?

답변1

현재 코드는 다음으로 확장됩니다.

for i in user1.com user2.co.uk user3.com; do
    echo ${PASSES[i]};
done

물론 전혀 말이되지 않습니다. 간접 연산자는 대신 배열 인덱스 목록을 생성합니다.

bash$ echo "${!USERS[@]}"
0 1 2

이를 통해 개별 인덱스를 반복할 수 있습니다. 올바른 인용도 추가해 보겠습니다.

for i in ${!USERS[@]}; do
    echo "${PASSES[i]}"
done

전체 점수를 얻으려면 개인 변수에 대문자를 사용하면 안 됩니다. 대문자 변수 이름은 시스템용으로 예약되어 있습니다.

관련 정보