나는 2개의 배열을 반복하는 스크립트를 만들기 위해 최선을 다했습니다. 변경된 부분이 포함된 명령을 실행하려면 배열의 각 값에 ExecuteSyncoid
호출되는 문자열을 기반으로 문자열 에 값을 입력해야 합니다.SyncoidCommand
이 문자열은
SyncoidCommand
SyncoidCommand
변경해야 할 명령/문자열은 다음과 같습니다.
SynCoid-IterateThroughDataSets.sh -s /home/darkyere/Scripts/Syncoid/shortsourcelist -d /home/darkyere/Scripts/Syncoid/shortdestinationlist -c "syncoid <username>@XXX.XXX.XXX.XXX:SourceDataSet DestDataSet --compress none --sshcipher [email protected] --sshport <Port> --sshkey "/Dest/To/KeyFile" --no-privilege-elevation" -p <Password>
지금 변경해야 할 두 부분은 다음과 같습니다.
<username>@XXX.XXX.XXX.XXX:SourceDataSet DestDataSet
두 가지 문제는 어디에서 논의됩니까 SourceDataSet
?DestDataSet
장기적으로는 아래와 같이 반대 방향으로도 작동해야 합니다.
SourceDataSet <username>@XXX.XXX.XXX.XXX:DestDataSet
나는 이러한 다양한 접근 방식을 시도했지만 일부 시도에서 유지하지 못한 것이 있습니다.
이것
$SourcePath
# And
$DestPath
"ExecuteSyncoid"에 삽입하려는 두 배열의 값입니다.
ExecuteSyncoid="${SyncoidCommand/SourceDataSet/$SourcePath}"
ExecuteSyncoid="${SyncoidCommand/DestDataSet/$DestPath}"
# ----------
ExecuteSyncoid=$(echo $SyncoidCommand | sed "s+SourceDataSet+$SourcePath+g")
ExecuteSyncoid=$(echo $SyncoidCommand | sed "s+DestDataSet+$DestPath/+g")
하지만 변경된 문자열은 항상 다음과 같습니다.
syncoid <username>@XXX.XXX.XXX.XXX:SourceDataSet Storage/WallaBag --compress none --sshcipher [email protected] --sshport <Port> --sshkey "/Dest/To/KeyFile" --no-privilege-elevation" -p <Password>
따라서 코드를 변경하는 데에는 문제가 없습니다 DestDataset
.
하지만 내가 게시한 것 이상을 포함하여 모든 시도에도 불구하고 결코 바뀌지 않았습니다.
<username>@XXX.XXX.XXX.XXX:SourceDataSet
기다리다.
<username>@XXX.XXX.XXX.XXX:Storage/WallaBag
문자열에서 ":"가 있는 부분을 변경하는 데 도움이 될 수 있는 bash 지식을 가진 사람이 있습니까?
<username>@XXX.XXX.XXX.XXX:SourceDataSet DestDataSet
# Or
SourceDataSet <username>@XXX.XXX.XXX.XXX:DestDataSet
Dakel을 읽어주셔서 감사합니다.
답변1
(답변은 질문 편집자에서 커뮤니티 위키 답변으로 이동되었습니다.)
이건 오류야
ExecuteSyncoid="${SyncoidCommand/SourceDataSet/$SourcePath}"
ExecuteSyncoid="${SyncoidCommand/DestDataSet/$DestPath}"
Philippos의 도움 덕분에 이 문제가 해결되었습니다.
ExecuteSyncoid="${SyncoidCommand/SourceDataSet/$SourcePath}"
ExecuteSyncoid2="${SyncoidCommand/DestDataSet/$DestPath}"
첫 번째 문자열을 두 번째 문자열로 덮어쓰는 것만큼 간단합니다. 두 번째 찌르기를 바꾼 후 작동했습니다.
감사합니다. 좋은 하루 되세요.