Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash sed——替换for do循环中的变量_Bash_Sed - Fatal编程技术网

Bash sed——替换for do循环中的变量

Bash sed——替换for do循环中的变量,bash,sed,Bash,Sed,我想使用sed在文本文件中插入一个计数器。例如,该文件包含以下内容: please.add.number.00 以下是我正在使用的脚本: for i in $(seq 0 10) do sed -i 's/please.add.number.00/please.add.number.$i/' filename.txt done 但是文件中的值($i)不会更改。我想在filename.txt的这一行中替换$I的值。如果您能帮助我解决这个问题,我将不胜感激 如评论中所述,在这两行之间: echo

我想使用sed在文本文件中插入一个计数器。例如,该文件包含以下内容:

please.add.number.00
以下是我正在使用的脚本:

for i in $(seq 0 10)
do
sed -i 's/please.add.number.00/please.add.number.$i/' filename.txt
done
但是文件中的值(
$i
)不会更改。我想在filename.txt的这一行中替换$I的值。如果您能帮助我解决这个问题,我将不胜感激

如评论中所述,在这两行之间:

echo '$HOME'
echo "$HOME"
单引号将导致
$HOME
,双引号将告诉您的主目录


根据对您问题的编辑,您的实际问题似乎是误解了
sed
的工作原理。参数有两个:搜索模式和替换。如果搜索模式(
please.add.number.00
)从未更改,则它将仅在第一次运行时匹配。

变量不会以单引号展开。使用双引号。是否确实要
seq 10 10
$(seq 10 10)
只生成
10
,因此没有循环。如果有一个循环(比如'seq 10 20'),这将用
..number.10
替换所有
..number.00
,并且不会再进行替换,因为在进行第一次替换后,将不再剩下'..number.00'。还要注意,
please.add.number.00
中的点是通配符,而
please.add.number.i
中的点是文字句点。很抱歉,for循环中有一个输入错误;它应该是以美元表示的i(seq 0 10),目标是将此行中的值从1更改为50..我以为sed会这样做..而sed中的双引号..不起作用。