我有一个单行文件,其中的值存储为字符串:
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)
我建议您使用要读取的文件的完整路径,而不是假设两个脚本位于同一目录中。
我不会发誓这是最优雅的解决方案。
你可以做一个“有用的猫”;)
VAR = $(cat $(dirname $0)/server_name)
Run Code Online (Sandbox Code Playgroud)
这会将与脚本位于同一目录中的“server_name”文件的内容放入 $VAR。无论您在何处运行脚本,都可以正常工作。
| 归档时间: |
|
| 查看次数: |
2478 次 |
| 最近记录: |