Android ソースの同期とビルドを容易にするスクリプトを作成しました。チェリーピックのパッチに機能を追加してみましたが、うまく動作しません。スラッシュが原因であることはわかっていますが、スラッシュを保護/エスケープする方法がわかりません。
コードの一部は次のとおりです。
echo "Copy/paste the project folder, i.e. 'frameworks/base'"
read folder
echo ""
echo "Now paste the cherry-pick git link, i.e. 'git fetch <someproject> refs/changes/... && git cherry-pick FETCH_HEAD'"
read cherry
echo ""
Begin
clear
echo ""
export IFS="&&"
for x in $cherry
do
cd ${CM}/${folder}
CHERRY=$(trim "$x")
$CHERRY
done
「cherry」変数が次のようになっているとしましょう:
git fetch http://r.cyanogenmod.com/CyanogenMod/android_frameworks_base refs/changes/68/22968/2 && git cherry-pick FETCH_HEAD
次のエラーが表示されます。
/home/tristan202/bin/build_cm.sh: line 159: git fetch http://r.cyanogenmod.com/CyanogenMod/android_frameworks_base refs/changes/91/23491/2: No such file or directory
/home/tristan202/bin/build_cm.sh: line 159: git cherry-pick FETCH_HEAD: command not found
なぜ失敗するのかわかりません。
それが呼び出す「トリム」関数は、先頭と末尾のスペースをトリミングする関数です。for ループ内で "$CHERRY" をエコーすると、コマンドは正しく出力されますが、それでも失敗します。