我是编写shell脚本的新手。我有以下shell脚本。我将使用循环动态替换带有值的字符串。
-regextype type
Changes the regular expression syntax understood by -regex and -iregex tests which occur later on the command line. Currently-implemented types are emacs (this is the default), > posix-awk, posix-basic, posix-
egrep and posix-extended.
但此脚本会将for i in $(seq 1 5)
do
sed 's/counter/$i/g' AllMarkers.R > newfile.R
done
替换为counter
而不是$i
或1
和....如果有人可以告诉我如何替换{{}} {1}}使用循环的序列号。
答案 0 :(得分:0)
在单引号括起来的字符串中不执行变量插值。 ("Variable interpolation"是该功能的官方名称,用于替换变量引用,例如" $ i"及其值,在字符串内。)
如何解决这个问题的可能性很小。最常见的是:
for i in $(seq 1 5)
do
sed 's/counter/'$i'/g' AllMarkers.R > newfile.R
done
在$i
之前停止单引号字符串,放置$i
,然后恢复单引号字符串。这种变化将是:
# in case if $i might potentially contain spaces:
sed 's/counter/'"$i"'/g'
# in case if the whole expression to sed has no special characters:
sed "s/counter/$i/g"