Linux locating/finding 文件的命令,其中文件名存储在变量中

Linux Command for locating/finding a file where the filename is stored in a variable

我知道这应该是一个简单的命令,但我无法找出错误。我认为它与语法有关

所以我有一个文件名 script.sh 存储在变量 var1 中。所以流程是这样的

#! /bin/bash
echo "Enter commit hash"
read commit
var1=`git diff-tree --no-commit-id --name-only -r "$commit"`
echo $var1
locate -br "$var1"

代码在 echo $var1 之前工作正常,但我无法 find/locate 文件所在的路径。

预期输出

script.sh
/c/training

假设 script.sh 出现在 /c/training 中。

以防万一,请务必使用 name-only 而不是 name-oly

git diff-tree --name-only

这可以解释为什么 var1 是空的。

此外,请将建议 from shellcheck 用于您的 bash 脚本。

#! /bin/bash
echo "Enter commit hash"
read -r commit
var1=$(git diff-tree --no-commit-id --name-only -r "$commit")
echo "$var1"
locate -br "$var1"

在阅读了两者之间的区别后,尝试使用 find 命令而不是 locate。 现在可以使用了。