首页 > 解决方案 > 用于定位/查找文件名存储在变量中的文件的 Linux 命令

问题描述

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

所以我有一个文件名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,但我无法找到/定位文件存在的路径。

预期产出

script.sh
/c/training

假设 script.sh 存在于 /c/training 中。

标签: bashlocate

解决方案


以防万一,请确保不要name-only使用name-oly

git diff-tree --name-only

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

此外,将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"

推荐阅读