J'écris un script avec un menu itératif pour exécuter des lignes de commande. Cependant, après avoir créé le menu itératif, j'ai une erreur quand je veux exécuter les commandes. L'erreur est [COMMAND] Aucun fichier ou répertoire linux.Script Bash perdu chemin shebang après la fonction d'instanciation
#!/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
Je veux trouver un fichier * .xml puis exécuter un script qui existent déjà et appartiennent à/usr/bin. Cependant la commande find ne s'exécute pas et aussi la commande cat dans cet exemple, obtenant l'erreur suivante ([COMMAND] Pas de tel fichier ou répertoire linux.)
si j'essaie d'exécuter une commande bash avant la fonction, la commande exécuter sans n'importe quel problème, mais après la fonction, les commandes échouent.
Je crée un alias au script pour exécuter/repo/$ USER/programme sans inclure le chemin vers le script.