我可以从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
答案 0 :(得分:7)
您需要将locate
命令的输出分配给变量:
VAR1=$(locate -b 'mosesdecoder' . | head -n 1)
(使用head
获取热门n
行。
构造$(...)
被称为命令替换,您可以在Bash Reference Manual或{的命令替换部分中阅读它{3}}
答案 1 :(得分:3)
read
,redirections和process substitutions是您的朋友:
IFS= read -r var1 < <(locate -b 'mosesdecoder' .)
使用小写变量名称被认为是一种很好的做法。
如果您的-0
支持,最好使用locate
标记:
IFS= read -r -d '' var1 < <(locate -0 -b 'mosesdecoder' .)
以防你的路径中有换行符或有趣的符号。