从第三方bash脚本,我有像
这样的代码devpath="$(command -v $bin)"
devpath="$(type -p $bin)"
你能说出它是什么意思吗?
答案 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