Comment saisir un chemin avec un espace blanc?

J’ai un fichier principal qui utilise (du principal je fais une source) un fichier de propriétés avec des variables pointant vers des chemins.

Le fichier de propriétés ressemble à ceci:

TMP_PATH=/$COMPANY/someProject/tmp OUTPUT_PATH=/$COMPANY/someProject/output SOME_PATH=/$COMPANY/someProject/some path 

Le problème est SOME_PATH , je dois utiliser un chemin avec des espaces (je ne peux pas le changer).

J’ai essayé d’échapper à l’espace, avec des guillemets, mais pas de solution jusqu’à présent.

J’ai modifié les chemins, le problème avec les guillemets simples est que j’utilise une autre variable $COMPANY dans le chemin

Utilisez l’une de ces trois variantes:

 SOME_PATH="/mnt/someProject/some path" SOME_PATH='/mnt/someProject/some path' SOME_PATH=/mnt/someProject/some\ path 

Je vois Federico que vous avez trouvé la solution par vous-même. Le problème était à deux endroits. Les assignations doivent être correctement citées, dans votre cas

 SOME_PATH="/$COMPANY/someProject/some path" 

est l’une des solutions possibles.

Mais dans shell ces citations ne sont pas stockées dans une mémoire, alors quand vous voulez utiliser cette variable, vous devez la citer à nouveau, par exemple:

 NEW_VAR="$SOME_PATH" 

car sinon, l’espace sera étendu au niveau de la commande, comme ceci:

 NEW_VAR=/YourCompany/someProject/some path 

ce qui n’est pas ce que vous voulez

Pour plus d’informations, vous pouvez consulter mon article à ce sujet http://www.cofoh.com/white-shell

Vous pouvez échapper au caractère “espace” en mettant un \ juste avant.

 SOME_PATH=/mnt/someProject/some\ path 

devrait marcher

Si le fichier ne contient que des affectations de parameters, vous pouvez utiliser la boucle suivante au lieu de la rechercher:

 # Instead of source file.txt while IFS="=" read name value; do declare "$name=$value" done < file.txt 

Cela vous évite d'avoir à citer quelque chose dans le fichier et est également plus sécurisé, car vous ne risquez pas d'exécuter du code arbitraire à partir de file.txt .

Si le chemin dans Ubuntu est “/ home / ec2-user / Name of Directory”, procédez comme suit:

1) Fichier build.properties de Java:

 build_path='/home/ec2-user/Name\\ of\\ Directory' 

~/ est égal à /home/ec2-user

2) Jenkinsfile:

 build_path=buildprops['build_path'] echo "Build path= ${build_path}" sh "cd ${build_path}"