Essayer de créer un script bash (sur mac) qui crée un dossier, puis exécute une série de scripts dans ce dossier. Je souhaite rappeler le chemin d'accès absolu au dossier et demander à l'utilisateur de confirmer avant de prendre des mesures.
Le script prend comme argument un chemin relatif, comment puis-je convertir un chemin absolu avant de créer le dossier?
!/bin/bash
if [[ $# -eq 0 ]] ; then
echo 'Whoa! You dont want to do that! you need to tell me where to put it'
exit 0
fi
ORG_DIR=$(pwd)
#here I want to get path before making directory, I've only figured out how to do after.
mkdir ../$1
cd ../$1
NEW_DIR=$(pwd)
echo "Running scripts in"
echo $NEW_DIR
read -p "Are you sure? (y/n) " -n 1 -r
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
# run a bunch of scripts
fi
Comment puis-je obtenir le chemin absolu de NEW_DIR avant de le créer?
Remarque: la plate-forme est OSX, je n'ai pas besoin de prendre en charge d'autres variantes de nix.
EDIT: Sam 29
Je me suis rendu compte que, dans un effort pour réduire la question aux détails essentiels, je réduisais trop mes excuses.
Ce script existe dans (par exemple saké)
/Documents/git/ProjectGenerator
J'ai l'intention que le script génère un projet (ou le chemin entré)
/Documents/git/NewProject
Il exécute une combinaison de scripts npm et copie des fichiers à partir de
/Documents/git/ProjectGenerator
Le reste du script fonctionne bien maintenant, mais j'ai récemment accidentellement appuyé sur Entrée avec le mauvais répertoire. Étant donné que ce script est destiné uniquement à mon usage (et non à sudo), j'essaie d'ajouter un contrôle d'intégrité, pas un contrôle de sécurité au début du script. Doit taper Y et entrer après avoir regardé le répertoire.
J'essaie d'obtenir un chemin absolu et ce que je reçois est
/Documents/git/ProjectGenerator/../NewProject
J'essaie de faire écho
/Documents/git/NewProject
avant de créer le répertoire. (parfois le chemin est beaucoup plus complexe)
En noeud nous avons path.resolve(path)
En php ou c sa realpath(path)
Je n'arrive pas à trouver une commande équivalente dans osx bash, y en at-il une? ou dois-je analyser la chaîne?
$1
est../../../../../System
oufoo bar
?