将“-e”作为参数传递给 awk 会产生意想不到的结果

问题描述 投票:0回答:1

我有简短的 bash 脚本,不会将“-e”传递给 awk:

str="Morgenstern"
ex = "-e "
for i in {1..11}
do
    echo $(echo $str| awk -v vv="$i" -v xx="$ex" 'print xx substr ($0,vv,1)}')
done
 

结果应该是:

-e M
-e o
-e r

等等...

实际结果是

M
o
r

如果我将 ex 更改为“-b”,那么我会得到预期的结果。 (-b M 、-b o 等)

我还尝试在 awk 语句中硬编码“-e”,但结果相同。

如何让 awk 接受“-e”作为参数或文字?

awk parameters
1个回答
0
投票

问题是多余的

echo
,它通过
$(…)
被传递

echo -e M

删除多余的

echo

str="Morgenstern"
ex="-e "
for i in {1..11}
do
    echo $str | awk -v vv="$i" -v xx="$ex" '{ print xx substr ($0,vv,1) }'
done
© www.soinside.com 2019 - 2024. All rights reserved.