Penso di aver trovato un modo alternativo, forse più complesso, ma penso che funzioni
Ti scrivo un pseudocodice sintetico:
input
if(input == 1) ESEGUO FUNZIONE IN DIRECTORY CORRENTE
else if(input == 2){
OUT=`./CambioDirectory.exe`
cd $OUT
ESEGUO FUNZIONE IN NUOVA DIRECTORY
}
Gli apici in cui è racchiuso l'eseguibile CambioDirectory.exe, non sono apici italiani, ma apicetti americani, quelli che nelle tastiere americane si trovano, insieme alla tilde, nel tasto dove noi abbiamo \ e | (in alto a sx).
Negli script bash, gli apicetti americani servono per catturare l'output di un programma, quindi facendo OUT=`CambioDirectory.exe`, è come se tu assegnassi alla variabile OUT, l'output dell'eseguibile specificato.
Ora ti metto il codice che genera CambioDirectory.exe (l'ho scritto in C++) (P.S. in realtà non è importante assegnargli l'estensione .exe, l'ho messo solo per fare un parallelo con windows)
//CODICE C++ CHE GENERA CambioDirectory.exe
#include <iostream>
using namespace std
int main(){
char dir[70]; //70 caratteri penso che bastino per un path ;)
cin >> dir;
cout << dir; //questo output viene assegnato alla variabile OUT
return(0);
}
Ora, ritornando allo pseudocodice che ho scritto prima, facendo cd $OUT, dovrebbe portarti nella directory che hai inserito te durante l'esecuzione di CambioDirectory.exe
Per fare il cambio di directory tutto in un'unica riga di script puoi scrivere;
echo "Inserisci la nuova directory: " && OUT=`./CambioDirectory.exe` && cd $OUT
Se non ti è chiaro qualcosa o se non funziona dimmelo
P.S. Capisco che è un po' artificioso, ma è l'unica alternativa che mi è venuta in mente