繁体   English   中英

如何使用 sed 存储变量?

[英]How do I use sed to store a variable?

我正在尝试使用 sed 作为变量的输入。 用户将从文件列表中进行选择,每个文件前都有数字以标识单个文件。 然后他们选择一个与名字相对应的数字。 我需要获取该文件的名称。 我的代码是:

for entry in *; do
((i++))
echo "$i) $entry: "
done

echo What file # do you want to choose?:
read filenum
fileName=$(./myscript.sh | sed -n "${filenum}p")
echo $fileName  ###this is to see if anything goes into fileName. nothing is ever output
echo What do you want to do with $fileName?

理想情况下,我会使用 () 而不是反引号,但我似乎无法弄清楚如何。 我查看了下面的链接,但无法让这些想法发挥作用。 我相信一个问题可能是我试图在我的 sed 中包含filenum变量。

https://www.linuxquestions.org/questions/linux-newbie-8/storing-output-of-sed-in-a-variable-in-shell-script-499997/

将 sed 的输出存储到变量中

不要在$filenum周围加上反引号。 这将尝试将$filenum的内容作为命令执行。 将变量放在双引号内。

如果您确实想在另一组反引号中嵌套反引号表达式,则必须对它们进行转义。 这就是$()变得有用的地方——它们可以轻松嵌套。

使用sed -n ,需要使用p命令打印要在输出中显示的行。

fileName=$(sed -n "${filenum}p" myscript.sh)

这会将myscript.sh $filenum行的内容放入变量中。

如果您确实想执行myscript.sh并打印其输出的选定行,则需要通过管道传输到sed

fileName=$(./myscript.sh | sed -n "${filenum}p")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM