Final.txtは次のとおりです。
build/create_changes.sh
build/create_changes.sh-meta.xml
src/aura/camping/camping.design
src/aura/camping/camping.design-meta.xml
/aura/
その行に含まれるファイルだけを変更したいと思います。src/aura/camping
次のコードを書きましたが、エラーが発生します。
echo replaceText ${\$CFILE//\$CFILE/"src/aura/"($(basename -- "$(dirname -- "$CFILE")"))}
line 62: ${\$CFILE//\$CFILE/"src/aura/"($(basename -- "$(dirname -- "$CFILE")"))}: bad substitution
これは($(basename -- "$(dirname -- "$CFILE")
キャンプを$CFILE
与えますsrc/aura/camping/camping.design
。
src/aura/camping/camping.design
しかし、それは置き換えられませんsrc/aura/camping
function contains() {
local n=$#
local value=${!n}
for ((i=1;i < $#;i++)) {
if [ "${!i}" == "${value}" ]; then
echo "y"
return 0
fi
}
echo "n"
return 1
}
if [ -e final.txt ]
then
ARRAY=()
while read CFILE
do
echo Analyzing file `basename $CFILE`
case "$CFILE"
in
*.app) TYPENAME="AuraDefinitionBundle";;
*.cmp) TYPENAME="AuraDefinitionBundle";;
*.css) TYPENAME="AuraDefinitionBundle";;
*.evt) TYPENAME="AuraDefinitionBundle";;
*.js) TYPENAME="AuraDefinitionBundle";;
*.svg) TYPENAME="AuraDefinitionBundle";;
*.auradoc) TYPENAME="AuraDefinitionBundle";;
*.design) TYPENAME="AuraDefinitionBundle";;
*) TYPENAME="UNKNOWN";;
esac
if [ "$TYPENAME" == "AuraDefinitionBundle" ]
then
if [ $(contains "${ARRAY[@]}" $(basename -- "$(dirname -- "$CFILE")")) != "y" ]
then
echo baseFile from new method cFile $CFILE
ARRAY+=($(basename -- "$(dirname -- "$CFILE")"))
echo replaceText ${\$CFILE//\$CFILE/"src/aura/"($(basename -- "$(dirname -- "$CFILE")"))}
else
continue
fi
fi
done < final.txt
else
echo Change file not found!
fi
最後に実行され、cat final.txt | xargs -I {} cp --parents {} $1
すべてのファイルをcampaign
フォルダから別のファイルパスにコピーする必要があると思います。
試験を終えた
echo baseFile from new method cFile $CFILE
FILENAME = "$CFILE"
ARRAY+=($(basename -- "$(dirname -- "$CFILE")"))
replace=$(basename -- "$(dirname -- "$CFILE")")
echo relaceWord $replace
echo replaceText ${FILENAME//$CFILE/$replace}
ベストアンサー1
拡張では、${parameter/pattern/replacement}
パラメータ名を最初の要素として使用します。したがって、foo=bar; echo "${foo/a/x}"
出力.inbxr
は有効な引数ではないため、エラーが発生します。コンテンツに対して置換を実行するには、を使用できます。${\$CFILE//\$CFILE/"src/aura/"($(...))}
\$CFILE
CFILE
${CFILE/...}
「パターン」セクションでは、バックスラッシュがドル記号をエスケープするため、\$CFILE
リテラル文字列が見つかります$CFILE
。その後、再度 using は、${CFILE/$CFILE/...}
内容をCFILE
置き換えるテキストとパターンとして使用するテキストとして扱います。変数(*)の内容全体を置き換えます。これはパラメータなしで交換部品を作成するのと同じです。ここで何をするのかわかりません。
(*もちろんそれ自体が一致しないglobではない限り。)