2014-11-11 3 views
2

я могу выделить путь к определенной переменной из Баш:Как назначить переменной bash первый результат локации?

VAR1=/home/alvas/something 

я могу найти его автоматически:

$ cd 
$ locate -b "something" . 
/home/alvas/something 
/home/alvas/someotherpath/something 

Но как Поручаю первый результат найти как переменной стоимость?

Я попытался следующие, но это не работает:

[email protected]:~$ locate -b 'mosesdecoder' . | VAR1= 
[email protected]:~$ VAR1 
VAR1: command not found 

ответ

5

Вам необходимо присвоить вывод команды locate переменной:

VAR1=$(locate -b 'mosesdecoder' . | head -n 1) 

(Используйте head, чтобы получить наверх n линий).

Конструкция $(...) называется подстановки команд и вы можете прочитать об этом в Command Замена секции Bash Reference Manual или в POSIX Shell Specification.

3

read, redirections и process substitutions Ваши друзья:

IFS= read -r var1 < <(locate -b 'mosesdecoder' .) 

и строчными имен переменных считается хорошей практикой.

Было бы лучше использовать -0 флаг, если ваш locate поддерживает его:

IFS= read -r -d '' var1 < <(locate -0 -b 'mosesdecoder' .) 

только в случае, если у вас есть новые строки или забавные символы в ваших путях.

+0

+1 мы отправили похожие ответы, но вы были быстрее :) – anubhava

+1

Да, потому что у вас уже есть этот ответ, который был опубликован не только на несколько секунд быстрее, он также был более точным. – anubhava

Смежные вопросы