我尽了最大努力尝试制作一个脚本来迭代 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
最好的问候,感谢您阅读达凯尔
答案1
(答案从问题的编辑移至社区维基答案。)
这是错误
ExecuteSyncoid="${SyncoidCommand/SourceDataSet/$SourcePath}"
ExecuteSyncoid="${SyncoidCommand/DestDataSet/$DestPath}"
感谢 Philippos 的帮助,解决了这个问题
ExecuteSyncoid="${SyncoidCommand/SourceDataSet/$SourcePath}"
ExecuteSyncoid2="${SyncoidCommand/DestDataSet/$DestPath}"
这就像我用第二个字符串覆盖第一个字符串一样简单。改变第二次刺痛后,它起作用了。
谢谢你,有一个美好的一天。