J'essaie d'écrire un script qui utilisera echo et écrit/ajoute à un fichier. Mais j'ai "" dans la syntaxe déjà dans les chaînes .. disons ..
echo "I am "Finding" difficult to write this to file" > file.txt
echo "I can "write" without double quotes" >> file.txt
Quelqu'un peut-il s'il vous plaît aider à comprendre cela, vraiment apprécié.
BR, SM
Si vous souhaitez avoir des guillemets, vous devez les échapper en utilisant le caractère barre oblique inverse.
echo "I am \"Finding\" difficult to write this to file" > file.txt echo
echo "I can \"write\" without double quotes" >> file.txt
Il en va de même si vous voulez aussi écrire le \
lui-même, car il peut provoquer des effets secondaires. Vous devez donc utiliser \\
Une autre option serait d'utiliser le `` '' au lieu des guillemets.
echo 'I am "Finding" difficult to write this to file' > file.txt echo
echo 'I can "write" without double quotes' >> file.txt
Cependant, dans ce cas, la sous-station de variable ne fonctionne pas, donc si vous souhaitez utiliser des variables, vous devez les mettre à l'extérieur.
echo "This is a test to write $PATH in my file" >> file.txt
echo 'This is a test to write '"$PATH"' in my file' >> file.txt
Si vous avez des caractères spéciaux, vous pouvez les échapper avec une barre oblique inverse pour les utiliser au besoin:
echo "I am \"Finding\" difficult to write this to file" > file.txt
echo "I can \"write\" without double quotes" >> file.txt
Cependant, vous pouvez également utiliser la fonction "EOF" du Shell avec la commande tee
, ce qui est vraiment bien pour écrire toutes sortes de choses:
tee -a file.txt <<EOF
I am "Finding" difficult to write this to file
I can "write" without double quotes
EOF
Cela écrira pratiquement N'IMPORTE QUEL contenu que vous voulez directement dans ce fichier et échappera tous les caractères spéciaux jusqu'à ce que vous arriviez à EOF
.
* Modifié pour ajouter le commutateur d'ajout, pour éviter d'écraser le fichier:-a