1

У меня есть однострочный файл со значением, хранящимся в виде строки в нем:

server-name-2009-August-9-AMI

Имя файла - server_name . Какой самый короткий и элегантный способ перевести это значение в переменную с помощью bash-скрипта?

2 ответа2

13

Вы можете использовать команду read . Если вы не предоставите никакой переменной, строка автоматически сохранится в переменной REPLY в Bash. Если вы предоставите одну переменную, строка будет сохранена в этой переменной. Если вы предоставите несколько переменных, Bash будет разбивать строку как слова (расщепление выполняется по пробелам), пытаясь поместить одно слово в каждую переменную. (Если слов больше, чем переменных, каждая переменная получает одно слово, а последняя получает остаток строки.)

Пример:

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

Обратите внимание, что переменная назначается без знака доллара (REPLY или LINE), но когда вы используете ее, вам нужно $REPLY или $LINE .

Таким образом, вы хотели бы что-то вроде этого:

read SERVER < /path/to/server_name

Я рекомендую вам использовать полный путь к файлу, который вы хотите прочитать, а не предполагать, что оба сценария будут в одном каталоге.

Я не буду клясться, что это самое элегантное решение.

8

Вы можете сделать "полезное использование кошки";)

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

Это поместит содержимое файла "имя_сервера", расположенного в том же каталоге, что и ваш скрипт, в $ VAR. Работает независимо от того, где вы запускаете скрипт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .