Ich schreibe ein Skript mit einem iterativen Menü zum Ausführen von Befehlszeilen. Nach dem Erstellen des iterativen Menüs wurde jedoch ein Fehler angezeigt, wenn ich die Befehle ausführen möchte. Der Fehler ist [COMMAND] keine solche Datei oder Verzeichnis linux.Bash-Skript verloren Shebang Pfad nach Instantiate-Funktion
#!/bin/bash
ATESTS=("TEST NAME 1" "TESTE NAME 2")
PATH=("test1.xml" "text2.xml")
menu() {
for i in ${!ATESTS[@]}; do
printf "%3d%s) %s\n" $((i+1)) "${OPT[i]:- }" "${ATESTS[i]}"
done
[[ "$msg" ]] && echo "$msg"; :
}
prompt="Check an ATEST (again to uncheck, ENTER when done): "
while menu && read -rp "$prompt" num && [[ "$num" ]]; do
/usr/bin/clear;
[[ "$num" != *[![:digit:]]* ]] &&
((num > 0 && num <= ${#ATESTS[@]})) ||
{ msg="Invalid ATEST: $num"; continue; }
((num--)); msg="${ATESTS[num]} was ${OPT[num]:+un}checked"
[[ "${OPT[num]}" ]] && OPT[num]="" || OPT[num]="+"
done
for i in ${!ATESTS[@]}; do
[[ "${OPT[i]}" ]] && { printf "%s " "${ATESTS[i]}"; msg=""; }
done
echo "$msg"
for i in ${!ATESTS[@]}; do
if [[ "${OPT[i]}" ]] && [[ $PWD = /repo/$USER/program ]]; then
find . -iname ${PATH[i]} -exec cat {} \;
fi
done
Ich möchte ein * .xml-Datei dann mit einem Skript ausführen, die bereits existieren und gehören zu/usr/bin. Der Befehl find wird jedoch nicht ausgeführt und auch der Befehl cat in diesem Beispiel, der folgende Fehler ([COMMAND] No solche Datei oder Verzeichnis linux.)
Wenn ich versuche, einen Bash-Befehl vor der Funktion auszuführen, führen Sie den Befehl ohne aus jedes Problem, aber nach der Funktion schlägt der Befehl fehl.
Ich erstellen einen Alias für das Skript für die Ausführung von innerhalb/Repo/$ USER/Programm ohne den Pfad zum Skript enthalten.