bash语句devpath = $(命令-v $ bin)

时间:2016-02-09 06:27:30

标签: bash

从第三方bash脚本,我有像

这样的代码
devpath="$(command -v $bin)"
devpath="$(type -p $bin)"

你能说出它是什么意思吗?

2 个答案:

答案 0 :(得分:0)

这意味着...使用参数command -v运行$bin并将输出保存在变量devpath中。另一个命令类似...运行type -v $bin并将输出保存在devpath

答案 1 :(得分:0)

运行此代码后,devpath将包含命令的输出(即command -v $bin)。

这个Bash行为被称为"命令替换"并在Bash参考手册的section 3.5.4中描述如下:

  

命令替换允许输出命令来替换   命令本身。 (...)Bash通过执行命令来执行扩展   并用标准输出替换命令替换   命令,删除任何尾随换行符。 (...)如果替换   出现在双引号,单词拆分和文件名扩展中   未对结果执行。

例如此脚本(保存为a.sh):

devpath="$(ls -al)"

while read -r line; do
        echo "Line: ${line}"
done <<< "$devpath"

在包含三个文件的目录中调用时,&#34; a.txt&#34;,&#34; b.txt&#34;和&#34; c.txt&#34;,可以打印出类似的内容:

Line: total 8
Line: drwxr-xr-x    6 kls  staff   204 Feb  9 07:39 .
Line: drwxr-xr-x+ 106 kls  staff  3604 Feb  9 07:38 ..
Line: -rwxr-xr-x    1 kls  staff    86 Feb  9 07:38 a.sh
Line: -rw-r--r--    1 kls  staff     0 Feb  9 07:39 a.txt
Line: -rw-r--r--    1 kls  staff     0 Feb  9 07:39 b.txt
Line: -rw-r--r--    1 kls  staff     0 Feb  9 07:39 c.txt