Bash - 从文件中读取行

Ada*_*tan 1 script bash

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

server-name-2009-August-9-AMI
Run Code Online (Sandbox Code Playgroud)

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

Tel*_*hus 13

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

例子:

telemachus ~ $ read < buff
telemachus ~ $ echo $REPLY
#!/usr/bin/env perl
telemachus ~ $ read LINE < buff
telemachus ~ $ echo $LINE
#!/usr/bin/env perl
Run Code Online (Sandbox Code Playgroud)

请注意,分配变量时没有使用美元符号 ( REPLYor LINE),但是在使用它时,您需要$REPLYor $LINE

所以你会想要这样的东西:

read SERVER < /path/to/server_name
Run Code Online (Sandbox Code Playgroud)

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

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


hay*_*lci 8

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

VAR = $(cat $(dirname $0)/server_name)
Run Code Online (Sandbox Code Playgroud)

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