我想创建一个脚本,在Makefile中添加一些文件。
我想保存Makefile到文件的相对路径。
我正想着做这样的事情file=$1
find Makefile
while [ $? -eq 1 ]
do
##"save current directory" ##
##"concatanate to $file" ##
cd --
done
答案 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编程的初学者,这个问题似乎很容易解决。我正在寻找自己解决的问题。 再次感谢!