2017-07-21 4 views
0

intérieur de mon script shell J'aiComment échapper un mot-clé qui est une commande dans un script shell?

#!/bin/bash 
var1=$1 
var2=$2 
cat<<new_script<<EOF 
...some code... 
for i in `find/-perm 6000 -type f`; do chmod a-s $i; done 
mkdir $var1 
...some code... 
EOF 

J'ai essayé beaucoup de choses, mais je ne suis pas en mesure d'échapper à la commande « trouver ». Au lieu de l'écrire dans le script new_script, lorsque je lance ce script shell, il exécute simplement la commande find dans le terminal.

Répondre

2

Citation EOF avec des guillemets simples:

#!/bin/bash 
cat >>new_script <<'EOF' 
...some code... 
for i in `find/-perm 6000 -type f`; do chmod a-s $i; done 
...some code... 
EOF 
+0

Pouvez-vous expliquer quels changements mettre EOF faire pour le faire fonctionner? –

+0

Sans guillemets simples, les variables de comportement sont interpolées, les commandes dans les guillemets sont évaluées, etc. Cela peut être désactivé en citant n'importe quelle partie de l'étiquette, qui est ensuite terminée par la valeur non guillemets. [Source] (https://en.wikipedia.org/wiki/Here_document#Unix_shells). – Cyrus

+0

Je dois aussi utiliser des variables. J'ai fait les modifications. –