Ausführung Dies ist ein Problem für verdrahteten days.I verwirrend ich will eine Klasse vollständige Klassennamen zu bekommen aus der Java-Code-Datei in shell.We analysieren können Paketnamen aus wie bekommen:String verketten Fehler in Shell-Skript
Paket com.android.mail.ui;
und den Klassennamen aus dem Code-Dateipfad abrufen, verwenden Sie den Shell-Befehl 'Basisname'. unten ist mein Shell-Scripts:
#!/bin/bash
get_package_name(){
java_file=$1
if [ ! -f $file_path ]; then
echo "Sorry,the java file is not exist:$1,please check"
exit 1
fi
class_base_name=`basename "$java_file" .java`
echo "class_base_name:$class_base_name"
package_name=`grep $java_file -e "^package" | awk -F " " '{print $2}' | tr ';' ' ' | sed 's/ //g'`
echo "package_name get result:$?"
echo "package_name:$package_name"
Methode 1 verwenden variable concat direkt
classpath_name=$package_name.$class_base_name
echo "method 1 classpath_name:$classpath_name"
Methode 2, Verwendung sed concat indirekt
classpath_name2=`echo "aa.bb" | sed "s/aa/$package_name/" | sed "s/bb/$class_base_name/"`
echo "method 2 classpath_name2:$classpath_name2"
}
erhalten ersetzenDas Problem ist: für einige Code-Datei die Ergebnis ist in Ordnung, wie: „class_base_name: MailTransport package_name get Ergebnis: 0 package_name: com.android.email.mail.transport Methode 1 classpath_name: com.android.email.mail.transport.MailTransport Methode 2 classpath_name2: com .android.email.mail.transport.MailTransport "
für andere ist es Ausgabe lautet:" class_base_name: EmailApplication package_name bekommen Ergebnis: 0 package_name: com.android.email .EmailApplicationh_name: com.android.email .EmailApplicationh_name2 : com.android.email "
das Ergebnis ist total messing und falsch.Ich bezweifle, es bezieht sich t Er Code Inhalte, die wirklich Sinn machen für das Ergebnis?
Sie ROCKKCOR! Ich hoffe, ich kann plus 100 für dich, das rettet mich! –