echo "x=0
while true; do
((i++))
cp file1 file1$x
done
" >> file1
` 当我使用在将粘贴到另一个文件的代码中定义的变量时,该变量不会打印在文件中。为什么?我该如何修复它?
答案1
如果你问为什么cp file1 file1$x
变成cp file1 file1
或cp 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