当我使用在将粘贴到另一个文件的代码中定义的变量时,它不会打印在文件中。为什么?

当我使用在将粘贴到另一个文件的代码中定义的变量时,它不会打印在文件中。为什么?
echo "x=0
while true; do
((i++))
cp file1 file1$x
done
" >> file1

` 当我使用在将粘贴到另一个文件的代码中定义的变量时,该变量不会打印在文件中。为什么?我该如何修复它?

答案1

如果你问为什么cp file1 file1$x变成cp file1 file1cp file1 file1foo(当前 shell 中foo的值在哪里),那么这是因为在双引号内时会发生变量扩展。$x$x

您可以使用以下方法防止变量扩展单身的引号:

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

或者(更习惯用)使用带引号终止符的 here document

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

相关内容