C - bin/sh 错误和 mekefile 错误 127,但我在我的脚本中写了 bin/bash?



我有这个可以工作的bash脚本(它打印输出(,但是当我运行程序时,最后找不到错误/bin/sh,makefile错误127。我什至没有bin/sh,我写了bin/bash。analisi.sh是脚本,这是生成文件的一部分,supermercato.PID是保存线程超级市场的 PID 的位置。

./run: 
cd src; 
(./supermercato & echo $$! > supermercato.PID) & 
cd ..; 
sleep 25s; 
kill -1 $$(cat src/supermercato.PID); 
chmod +x ./analisi.sh
./analisi.sh $$(cat src/supermercato.PID);  

这是脚本analisi.shtest.log是写入输出的文件

#!/bin/bash
if [ -f "test.log" ]; then
while read line; do echo $line; done < test.log
else
echo "$0:Errore" 1>&2
fi

下面是一个错误示例(SIGHUP 是项目的一部分(。TEST 写在名为 test 的日志文件上.log我从脚本中读取了该文件。

Received SIGHUP
./analisi.sh $(cat src/supermercato.PID);  
******TEST******
/bin/sh: 1:  : not found
make: *** [Makefile:15: run] Error 127

这一行:

./analisi.sh $$(cat src/supermercato.PID);  

有一个尾随空格(!(,并且上一个命令以分号结尾,因此 BASH 认为您正在尝试执行两个命令:./analisi.sh后跟一个名称由单个文字空格字符组成的命令。

您可以在终端中重现它。在反斜杠后放一个空格并按 Enter 键:

$ echo hey;  
hey
-bash:  : command not found
$

还要检查错误消息的格式:

$ wow
-bash: wow: command not found

所以格式是:

<BASH>: <line number>: <command_name>: not found

在您的情况下,它是

/bin/sh: 1:  : not found

请注意这里有两个空格: :

最新更新