Bash:保存文件的当前目录并将其与此文件连接,而“find”为false?

时间:2018-01-25 12:41:48

标签: bash

我想创建一个脚本,在Makefile中添加一些文件。

我想保存Makefile到文件的相对路径。

我正想着做这样的事情

file=$1
find Makefile
while [ $? -eq 1 ]
do
  ##"save current directory" ##
  ##"concatanate to $file" ##
  cd --
done

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

cd $1
while true; do
  if [ ! -f Makefile ]; then
    return 0
  fi
  echo $PWD
  cd ..
done

这将转到arg目录并显示目录,直到找到没有Makefile的目录

答案 1 :(得分:0)

我试图以另一种方式拥有这条相对路径

res=$(readlink -f $1)
echo "path of my file = $res"
find Makefile 2> /dev/null
while [ $? -eq 1 ]
do
    cd ..
    find Makefile 2> /dev/null
done
res2=$(pwd)
echo "$res2 is the Makefile path"
res=$(sed -i "s/$res2/.//g" <<< $res)
echo "the path becomes $res"

编辑: 谢谢你的回答, 我有从Makefile目录到我的文件的相对路径。 我的问题解决了。

我的代码现在是:

res=$(readlink -f $1)
echo "path of my file = $res"
while [ ! -f ./Makefile ]
do
    cd ..
done
res2=$(pwd)

echo "$res2 is the Makefile path"

res=$(echo "$res" | sed s\#"$res2"\#\#g)

echo "the path becomes $res"

VAR="\n\t\t\t$res\t\t\t\t\t\t\\\\"
sed -i -e "s/^SRC.*$/&$VAR/g" Makefile
printf "$1 added in Makefile\n"

我的上一个sed不起作用,因为我的变量包含“/”并且我的第一个sed上的技巧不起作用。我是shell编程的初学者,这个问题似乎很容易解决。我正在寻找自己解决的问题。 再次感谢!