1 votes

Lorsque j'utilise des variables définies dans un code qui sera collé dans un autre fichier, elles ne seront pas imprimées dans le fichier. Pourquoi ?

echo "x=0
while true; do
((i++))
cp file1 file1$x
done
" >> file1

` Lorsque j'utilise des variables définies dans un code qui sera collé dans un autre fichier, elles ne seront pas imprimées dans le fichier. Pourquoi ? Et comment puis-je y remédier ?

1voto

steeldriver Points 118154

Si vous vous demandez pourquoi cp file1 file1$x devient cp file1 file1 o cp file1 file1foo (où foo est la valeur de $x dans le Shell actuel), alors c'est parce que le $x subit une expansion variable lorsqu'il se trouve à l'intérieur de guillemets doubles.

Vous pouvez empêcher l'expansion des variables en utilisant simple citations :

echo 'x=0
while true; do
((i++))
cp file1 file1$x
done
' >> file1

ou (de manière plus idiomatique) en utilisant un document ici avec un terminateur cité

cat >> file1 << 'EOF'
x=0
while true; do
((i++))
cp file1 file1$x
done
EOF

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X