私は、パス名の配列を持っている、と私は別のものがそうのように、sedを使用して、それらの各々を交換したいと思います:はbash:sedを検索し、配列要素のパスを置き換えるには、bashで
sed '[email protected]^(.*?)master_repo(.*?)@\1"${SOME_REPO_NAME}"\[email protected]' <<< ${FULL_TGT_DIRS[${i}]}
A配列の要素であるサンプルのパス名は次のようになります。
/Volumes/munki/master_repo/pkgs/apps
私は$SOME_REPO_NAME
に保存されている例えば「somedir」、とパス名「master_repo」を交換したいと思いますので、私は得る:
/Volumes/munki/somedir/pkgs/apps
または文字列置換を内蔵した:
for i in ${FULL_TGT_DIRS[@]}
do
FULL_TGT_DIRS[$i]=${FULL_TGT_DIRS[$i]/master_repo/$SOME_REPO_NAME}
#sed '[email protected]^(.*?)master_repo(.*?)@\1"${SOME_REPO_NAME}"\[email protected]' <<< ${FULL_TGT_DIRS[${i}]}
done
私のスクリプトを実行しているとき、私はいつも次のエラーを取得する:
> /usr/local/bin/repomgr: line 135:
> /Volumes/munki/master_repo/pkgs/apps: syntax error: operand expected
> (error token is "/Volumes/munki/master_repo/pkgs/apps")
私はだけでなく、異なるseparatersやsedのオプションを使用して試してみましたさまざまな見積もりの星座をシャッフルします。私は日常的にbashスクリプトを書いていないので、おそらく私は何かを逃していますか?
私はこれをMac上で実行していますので、私の処分ではbash 3.2しか使用できません。
回答に基づいて質問を更新しました。私はまだ同じエラーが発生します。 – pming
私は、配列をループする正しい方法を示す答えを更新しました。 – Barmar
はい、配列の値を変更する必要があります。最後のブロックは私のために働いた。ありがとうございました! – pming