在Bash中将文本写入文件

8

我需要简单地写一下

"echo" t${count} = "$"t${count}"

将所有数据写入文本文件,输出结果应类似于:

echo "  t1  = $t1"

由于"如实呈现"的要求,我尝试过:

count=1
saveIFS="$IFS"
IFS=$'\n'
array=($(<TEST.txt))
IFS="$saveIFS"
for i in "${array[@]}"
do
echo "echo" t${count} = "$"t${count}""
(( count++ ))
done >> long1.txt

还有类似以下的变体:

echo "echo" """"" t${count} = "$"t${count}""

但我猜双引号包裹只适用于变量。
有什么想法?
4个回答

13
实际上,在变量中没有双引号的换行符,第一个引号开始,第二个引号结束引用字符串。但是您可以随意连接字符串,因此"$"t${count}""实际上等同于"$"t${count},以引用$符号开头,后跟't',后跟计数变量。
回到您的问题,要获得“,您可以将其放在字面字符串中(由单引号括起来),例如echo '"my string"',请注意,字面字符串中不会替换变量。或者您可以进行转义,例如echo "\"my string\"",这将在字符串中放置一个文字“”,并且不会终止它。

4

您需要转义双引号(以及美元符号):

echo "\" t = \$t\""

4
echo "echo \"t${count} = $t${count}\""

1

这是又一个引用变体(更多是一种练习,而不是解决方案):

# concatenate alternating single- & double-quoted blocks of substrings
count=1
echo 'echo "t'"${count}"' = $t'"${count}"'"' 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接