.png)
Ich habe das Android SDK installiert und möchte, dass die Binärdateien build-tools/android-VERSION
im PATH verfügbar sind. Daher füge ich einige Zeilen hinzu:
ANDROID_SDK=/Application/Binaries/adt-bundle-linux-x86_64-20140321/sdk/
ANDROID_PATH=$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools:$ANDROID_SDK/build-tools/android-4.4.2/
Hier ist das Problem, ich könnte das SDK jederzeit aktualisieren und es build-tools/android-4.4.2/
könnte sich daher ändern. In diesem Fall müsste ich die Datei erneut bearbeiten und den android-version
Teil in $PATH aktualisieren.
Also habe ich das Profil in etwa so geändert:
ANDROID_SDK=/Application/Binaries/adt-bundle-linux-x86_64-20140321/sdk/
ANDROID_PATH=$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
for x in $ANDROID_SDK/build-tools/android-*/; do
export PATH=$PATH:$x
done
Das sieht dumm aus. Gibt es eine bessere Möglichkeit, es zu schreiben?
Antwort1
Die ideale Vorgehensweise besteht darin, ein Softlink-Verzeichnis mit dem Namen zu erstellen adt
und es nach SDK-Änderungen neu zu erstellen.
Somit PATH
bleibt Ihr Wille derselbe.
Antwort2
Bei diesem Ansatz wird die Ausgabe von zweimal ls
, sortiert nach Zeit und nur nach Verzeichnissen ( -td
), an den Befehl weitergeleitet head
, der dann die erste Zeile auswählt. Das Ergebnis ist, dass die neueste Version sowohl von als adt-bundle-linux-x86_64-*/sdk
auch von build-tools/android-*/
für die Änderung der Umgebungsvariable PATH verwendet werden sollte.
ANDROID_SDK=$( ls -td /Application/Binaries/adt-bundle-linux-x86_64-*/sdk/ | head -n 1 )
if ! [ -z $ANDROID_SDK ] ; then
ANDROID_PATH=$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
ANDROID_BUILDTOOLS=$( ls -td $ANDROID_SDK/build-tools/android-*/ | head -n 1 )
if ! [ -z $ANDROID_BUILDTOOLS ] ; then
echo "Adding $ANDROID_BUILDTOOLS to PATH"
export PATH=$PATH:$ANDROID_BUILDTOOLS
else
echo "Couldn't find build tools"
fi
else
echo "Couldn't find SDK"
fi
Antwort3
PATH="$PATH:$(printf '%s:' $ANDROID_SDK/build-tools/android-[0-9.]*/)"
Sollte arbeiten.
cd ~ ; mkdir dir1 dir2 dir3
( PATH=$(printf %s: $HOME/dir[12])
echo "$PATH" )
/home/mikeserv/dir1:/home/mikeserv/dir2:
Another method:
PATH="$PATH:$( set -- `printf '%s\n' "$ANDROID_SDK"*/android[0-9.]*/ |
sort -rV` ; [ -d "$1" ] && echo "$1" )"
Das nutztsort's -Version
Handhabung, die sicherstellen soll, dass der Positionsparameter"$1"
ist immer auf die neueste Version Ihres Android SDK eingestellt. Beispiel:
OHNE SORTIERUNG:
% printf %s\\n ~/dir[0-9]*
/home/mikeserv/dir1
/home/mikeserv/dir2
/home/mikeserv/dir23
/home/mikeserv/dir3
/home/mikeserv/dir45
DAMIT:
% printf %s\\n ~/dir[0-9]* | sort -V
/home/mikeserv/dir1
/home/mikeserv/dir2
/home/mikeserv/dir3
/home/mikeserv/dir23
/home/mikeserv/dir45
UND UMGEKEHRT:
% printf %s\\n ~/dir[0-9]* | sort -rV
/home/mikeserv/dir45
/home/mikeserv/dir23
/home/mikeserv/dir3
/home/mikeserv/dir2
/home/mikeserv/dir1