如何为bash变量分配locate的第一个结果?

时间:2014-11-11 14:38:40

标签: bash variables find locate

我可以从bash中为某个变量分配路径:

VAR1=/home/alvas/something

我可以自动找到它:

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

但是如何将locate的 first 结果作为变量的值分配?

我尝试了以下但不起作用:

alvas@ubi:~$ locate -b 'mosesdecoder' . | VAR1=
alvas@ubi:~$ VAR1
VAR1: command not found

2 个答案:

答案 0 :(得分:7)

您需要将locate命令的输出分配给变量:

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

(使用head获取热门n行。

构造$(...)被称为命令替换,您可以在Bash Reference Manual或{的命令替换部分中阅读它{3}}

答案 1 :(得分:3)

readredirectionsprocess substitutions是您的朋友:

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

使用小写变量名称被认为是一种很好的做法。

如果您的-0支持,最好使用locate标记:

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

以防你的路径中有换行符或有趣的符号。