gpt4 book ai didi

linux - 解析 "control"文件的脚本出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 05:32:06 25 4
gpt4 key购买 nike

我正在编写一个函数来解析 debian 控制文件以获取包构建依赖项。下面是所说的功能,它不起作用。

Debian 控制文件仅由某些“标题”(即:Build-Depends:)分隔,后面始终跟有一个冒号(:)。这导致可能会在多行上列出多个依赖项,而这些依赖项在同一行上没有 Build-Depends 标题(否则我已经可以正常工作了)。

我看到的具体问题是我从 grep 行收到“命令未找到”错误。 “命令”是来自控制文件的单词/文本。我对脚本的了解有限。我使用“google”将其拼凑在一起,因此我非常感谢任何提示。

function FindDep ()
{
CheckVar=0
echo "Running Find Depend."
ControlPath=$TmpBuild/Deb-ConfFiles/$1/debian/control
cat $ControlPath | while read line ;
do
TempVar=`grep Build-Depends $line`
if [ "$TempVar" != "" ]; then
BuildDep=`sed s/Build-Depends://g $TempVar | sed s/Build-Depends-Indep\://g | grep -o '[a-z]*[-]*[a-z]*'`
CheckVar=1
elif [ $CheckVar == 1 ]; then
TempVar=`grep : $line`
if [ "TempVar" != "" ]; then
BuildDep="$BuildDep `sed s/Build-Depends://g $TempVar | sed s/Build-Depends-Indep\://g | grep -o '[a-z]*[-]*[a-z]*'`"
else
CheckVar=0
fi
fi
done
echo "Here is what is listed as dep for " $1 "--" $BuildDep
for y in $BuildDep; do
echo $y
IsInstalled="dpkg -s $y | grep Status"
if [ "$IsInstalled" == "" ]; then
echo "installing " $y
dpkg -i $y > /dev/null 2>&1
if [ $? -gt 0 ]; then
apt-get -f --force-yes --yes install >/dev/null 2>&1
fi
dpkg -i $y > /dev/null 2>&1
fi
done
echo "Ending Find Depend"
}

最佳答案

首先转义引用变量的每一行,例如,将其...

ControlPath=$TmpBuild/Deb-ConfFiles/$1/debian/control

对此:

ControlPath="$TmpBuild/Deb-ConfFiles/$1/debian/control"

这就是原因:

$ y=hello world
bash: world: command not found

$ y="hello world"

$ cat $y
cat: hello: No such file or directory
cat: world: No such file or directory

$ cat "$y"
cat: hello world: No such file or directory

关于linux - 解析 "control"文件的脚本出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10072843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com