2016-08-07 2 views
2

bash 출력에서 ​​배열/목록을 만들려고합니다. 그런 다음 루프를 사용하고 싶습니다. 나는 계속 Syntax error: "(" unexpected (expecting "done")을 얻는다. 만약 파이썬 용어로 써야한다면, 문자열을 \ n 그리고 나서 for 루프로 나누고 싶습니다.bash에서 새 행을 배열로 만들기

+0

''$ DELETE "에있는 i의 경우; 마. '$ DELETE' 주위에 큰 따옴표가 있음을 주목하십시오. – inspectorG4dget

답변

2

먼저 쉘은 파이썬이 아닙니다. 등호에 공백이 작동하지 않습니다

DELETE = ($($MEGACOPY --dryrun --reload --download --local $LOCALDIR --remote $REMOTEDIR | sed 's|F '$LOCALDIR'|'$REMOTEDIR'|g')) 

쉘 위를보고

는, 그것의 첫 번째 인수로 프로그램 이름으로 DELETE= 해석합니다. 쉘이 두 번째 인수를 구문 분석 할 수 없기 때문에 표시되는 오류입니다.

과 함께 위의 교체 : 삭제합니다 for 루프에 대해

DELETE=($("$MEGACOPY" --dryrun --reload --download --local "$LOCALDIR" --remote "$REMOTEDIR" | sed 's|F '"$LOCALDIR"'|'"$REMOTEDIR"'|g')) 

두 번째 것은 배열과 배열은 특수 구문이 있습니다

for i in "${DELETE[@]}"; do 
    "$MEGARM" "$i" 
done 

주 :

  1. 않는 한을 당신은 단어 분할과 경로명 확장을 원한다. 모든 쉘 변수는 두배 안에 있어야한다. 따옴표.

  2. 변수 이름에 대문자 또는 소문자를 사용하는 것이 좋습니다. 시스템은 이름에 대문자 변수를 모두 사용하므로 실수로 덮어 쓰지 않으려합니다.

관련 문제