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

alv*_*vas 3 variables bash find locate

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

VAR1=/home/alvas/something
Run Code Online (Sandbox Code Playgroud)

我可以自动找到它:

$ cd
$ locate -b "something" .
/home/alvas/something
/home/alvas/someotherpath/something
Run Code Online (Sandbox Code Playgroud)

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

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

alvas@ubi:~$ locate -b 'mosesdecoder' . | VAR1=
alvas@ubi:~$ VAR1
VAR1: command not found
Run Code Online (Sandbox Code Playgroud)

fej*_*ese 8

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

VAR1=$(locate -b 'mosesdecoder' . | head -n 1)
Run Code Online (Sandbox Code Playgroud)

(head用于获得顶n线).

该构造$(...)称为命令替换,您可以在Bash参考手册POSIX Shell规范命令替换部分中阅读它.