문자열 목록을 통한 bash 루프

문자열 목록을 통한 bash 루프

이 예제의 형식을 지정할 수 있습니까?

for i in string1 string2 stringN
do
 echo $i
done

이 같은:

for i in 
string1
string2
stringN
do
 echo $i
done

편집: 혼란을 드려 죄송합니다. 스크립트를 실행하는 다른 방법이 있다는 것을 몰랐습니다. sh <scriptname>bash <scriptname>지금은 이름을 지정할 수 없는 다른 방법이 있습니다 . #!/bin/sh:)#!/bin/bash

답변1

Bash에서 배열을 사용하면 가독성이 향상됩니다. 이 배열 구문은 단어 사이에 임의의 공백을 허용합니다.

strings=(
    string1
    string2
    "string with spaces"
    stringN
)
for i in "${strings[@]}"; do
    echo "$i"
done

답변2

백슬래시를 사용하여 줄바꿈을 이스케이프 처리할 수 있습니다.

$ for i in \
> hello \
> world
> do
> echo $i
> done
hello
world
$

답변3

list='a b c d'
for element in $list;do 
    echo "$element"
done

답변4

다음으로 전환할 수 있는 옵션이 제공되는 경우 zsh:

for string (
  string1
  'other string'
  etc..
) printf '%s\n' "$string"

관련 정보