[英]How do i store the output of AWK as a variable to use in a SED command in a BASH script?
[英]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变量。
不要在$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.