【问题标题】:How to export 'ls' command in bash to separate variables如何在 bash 中导出“ls”命令以分隔变量
【发布时间】:2021-08-24 12:59:16
【问题描述】:

例如:

List="$(ls ~/Downloads)" 
echo $List

输出将是:

ExampleDirectory Example_Directory ExampleFile

如何获得(ls之后):

echo $File1
echo $File2 
echo $File3

得到

ExampleDirectory
Example_Directory
ExampleFile

像单独的 ls 输出一样,不仅可以生成 $List 中的文本行,还可以生成变量 $File1$File2$File3。 好像有点复杂。

【问题讨论】:

  • 一般来说,ls 输出不利于解析。它是为人类阅读而制作的,并且可以根据写入的内容更改其格式。您是否尝试将目录中的文件名作为其元素的数组?告诉我们您想要达到的目标,您可能会得到更好的帮助。
  • 我需要通过 dmenu 启动几个文件夹中列出的程序。
  • 为什么要不同变量中的名称?也许你可以用一个简单的循环来做你需要的事情:for f in $HOME/Downloads/*; do ...; done
  • @小米账号 - 你打算如何将这些单独的变量dmenu一起使用?
  • @Armali 我想列出程序并选择运行它们。

标签: linux bash shell ls


【解决方案1】:

如果要将~/Downloads 中的每个文件(或目录名称)分配给不同的bash 变量,则必须为这些变量找到不同的名称。使用bash 索引数组会更简单:

$ declare -a List=(~/Downloads/*)

然后,将它们全部打印出来:

$ printf '%s\n' "${List[@]}"

只打印第一个和第三个:

$ printf '%s\n' "${List[0]}" "${List[2]}"

要打印List 数组中的条目数:

$ printf '%d\n' "${#List[@]}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    • 2016-04-01
    • 2012-07-16
    • 2023-03-17
    • 2011-01-19
    相关资源
    最近更新 更多