
Ich habe eine EXE, die zwei CSV-Dateien als Eingabe verwendet. Wie unten:
cSplittinglines.exe srcdir\file.csv destdir\file.csv
Wie kann ich diese EXE-Datei mithilfe eines Shell-Skripts ausführen, sodass das Verzeichnis, aus dem das Skript ausgeführt wird, keinen Einfluss auf den Speicherort der EXE-Datei hat? Oder wie kann ich die harte Kodierung des EXE-Pfads vermeiden? Unten ist das Skript, an dem ich arbeite.
#!/bin/sh
STARTTIME=`date '+%Y%m%d.%H%M%S'`
LOGFILE=${ERRDIR}/${0}.${STARTTIME}
SplitDir=$1
LyxlamDir=$2
echolog ()
{
echo $*
echo $* >> ${LOGFILE}
}
for file in "${SplitDir}"/*; do
if [ -d "$file" ]; then continue; fi
extension=${file##*.}
if [ "$extension" = "csv" ]
then
cSplittingLines.exe "$file" "${LyxlamDir}"
mv "$file" "${SplitDir}/old"
fi
done
Antwort1
Legen Sie die EXE einfach in Ihren $PATH (dafür ist sie da) (%PATH% unter Windows).
mv cSplittingLines.exe /bin/
oder
echo "export PATH=\"\$PATH:/path/to/exe\"" >> ~/.bashrc
Auchhttps://www.shellcheck.netsagte;
SC2006: Use $(...) notation instead of legacy backticked `...`.
SC2086: Double quote to prevent globbing and word splitting.