딜레마에 빠졌습니다. 배열에서 각 문자열을 추출하고 결과를 처리하도록 Linux bash 스크립트를 작성하려고 합니다.
즉
var=("string one" "string two" "string three")
for 루프를 사용하여 각 문자열을 추출하는 방법은 문자열에 공백이 있다는 점을 염두에 두고 전체 문자열, 즉 "문자열 3"을 추출한 다음 해당 fo 루프 내에서 결과를 처리해야 한다는 점입니다.
예
#! /bin/bash
clear
SimName=("Welcome" "Testing Region")
echo
echo
echo
echo
#cd dreamgrid/Opensim/bin
# for loop goes here
# processing below
#screen -S "$SimName" -d -m mono OpenSim.exe -inidirectory="Regions/$SimName" # Needs altering to process each string
#sleep 2
#screen -r "$SimName" # Needs chaging to show each string in turn.
# echo $SimName[1] # something test to it with, but needs changing to show each string in turn.
BASIC에서는 간단합니다.
DIM A$(2)
A$(1) = "string one"
A$(2) = "string two"
FOR A=1 to 2
C$=A$(A)
FOR DL=1 TO 2000
NEXT
PRINT C$
NEXT
답변1
구문은 다음과 같습니다
for val in "${arr[@]}"; do
# something with "$val"
done
전.
$ arr=("string one" "string two" "string three")
$ for val in "${arr[@]}"; do printf '%s\n' "$val"; done
string one
string two
string three
의 큰따옴표는 "${arr[@]}"
공백(또는 보다 일반적으로 현재 의 문자)을 포함하는 요소를 올바르게 처리하도록 만듭니다 IFS
. 에서 man bash
:
If the word is double-quoted, ${name[*]} expands to a single word with the value of each array member separated by the first character of the IFS special variable, and ${name[@]} expands each element of name to a sep‐ arate word.