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