我有这个可以工作的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.sh
,test.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
请注意这里有两个空格:: :
。