【发布时间】:2021-01-30 12:36:00
【问题描述】:
我正在尝试使用 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 变量。
【问题讨论】:
-
在此处搜索
[bash] select done并阅读有关select命令的 bash 手册(在线)。 stackoverflow.com/questions/64130687/… 是最近出现的一个很好的例子。祝你好运。 -
你不应该在
$filenum周围有反引号 -
如果我删除 $filenum 周围的反引号,则输出变为 - sed: 1: "2": command expected
-
当然。打印第 2 行的命令是
2p,而不仅仅是2。 -
为什么要打印一行shell脚本?您真的要打印脚本输出的选定行吗?
标签: bash shell variables sed terminal