【问题标题】:How can I read a file and redirect it to a variable?如何读取文件并将其重定向到变量?
【发布时间】:2011-06-12 14:28:43
【问题描述】:

我有一个文件,上面写着一个字。我希望我的脚本将该单词放入一个变量中。

我该怎么做?

【问题讨论】:

    标签: linux shell scripting


    【解决方案1】:

    最简单的方法大概是:

    var=$(< file)
    

    不会创建新进程。

    【讨论】:

    • 这适用于 Bash 和其他高级 shell,但不适用于 Bourne shell。
    • 不是跨平台... 不能在 sh 看到 stackoverflow.com/questions/7427262/…
    • 在 2018 年还有人/任何事物还在使用非 bash sh 吗?也许是迪克特雷西的手表??
    • 警告:在 “ 之前没有空格(即 (&lt; 而不是 ( &lt;”)。
    • 此解决方案在 linux 上对 'endline' char 进行了转换。
    【解决方案2】:

    我认为最简单的方法是

    $ myvar=`cat file`
    

    【讨论】:

    • 变量不需要导出,等号两边的空格也不起作用。
    【解决方案3】:

    以数百万种方式...

    最简单的可能是

    my_var=$(cat my_file)
    

    如果你使用 bash 并且想要变得更漂亮,你可以使用 bash4 的 mapfile,它将整个文件放入一个数组变量中,每个单元格一行

    mapfile my_var < my_file
    

    【讨论】:

    • 从什么时候开始在 shell 脚本中允许 = 前后的间距?
    • @nightcracker 对不起,brainfart,在看到你的评论之前我已经更正了它
    • newlines 将使第一部分尝试执行并失败并出现 command not found 错误使用 var=$(cat file | tr -d '\n') 删除所有新行,包括任何尾随一个
    • @Jonathan 不会
    【解决方案4】:

    我认为它会去除换行符,但无论如何:

    variable=$(cat filename)
    

    【讨论】:

    • 它只会去掉最后的换行符。如果您似乎要删除其他换行符,那是因为您没有在输出中引用变量。 echo $variableecho "$variable"
    【解决方案5】:
    var="`cat /path/to/file`"
    

    这是简单的方法。请注意文件中的换行符。

    var="`head -1 /path/to/file`"
    

    这只会获取第一行,永远不会包含换行符。

    【讨论】:

    • 我有一个名为“log”的文件,$x="`cat log`" 结果为=2: command not found
    猜你喜欢
    • 1970-01-01
    • 2016-05-03
    • 1970-01-01
    • 2017-02-03
    • 2020-08-17
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多