Bash - 从文件中读取行

Bash - 从文件中读取行

我有一个单行文件,其中的值以字符串形式存储:

server-name-2009-August-9-AMI

文件名是server_name。使用 bash 脚本将此值转换为变量的最短、最优雅的方法是什么?

答案1

你可以做一个“有用的猫用途”;)

VAR = $(cat $(dirname $0)/server_name)

这会将位于脚本所在目录中的“server_name”文件的内容放入 $VAR。无论您在何处运行脚本,它都可以正常工作。

答案2

您可以使用该read命令。如果您不提供任何变量,该行将自动保存到REPLYBash 中的变量中。如果您提供单个变量,该行将保存到该变量中。如果您提供多个变量,Bash 会将该行拆分为单词(拆分基于空格),尝试将一个单词放入每个变量中。(如果单词多于变量,则每个变量获得一个单词,但最后一个变量获得该行的其余部分。)

例子:

telemachus ~ $ read < buff
telemachus ~ $ echo $REPLY
#!/usr/bin/env perl
telemachus ~ $ read LINE < buff
telemachus ~ $ echo $LINE
#!/usr/bin/env perl

注意,变量分配时没有使用美元符号(REPLYLINE),但是使用时需要$REPLY$LINE

因此,你会想要这样的东西:

read SERVER < /path/to/server_name

我建议您使用要读取的文件的完整路径,而不是假设两个脚本位于同一目录中。

我不会发誓这是最优雅的解决方案。

相关内容