Bash 脚本无限启动进程

Bash 脚本无限启动进程

Ubuntu。必须安装 basename 工具。Bash 脚本名为“basename”

#!/bin/bash

PROGNAME=$(basename $0)

if [[ -e $1 ]]; then
   echo -e "\nFile Type:"
   file $1
   echo -e "\nFile Status:"
   stat $1
else
   echo "$PROGNAME: usage: $PROGNAME file" >&2
   exit 1
fi

启动“./basename case”后,其中“case”是一个 bash 脚本,出现错误:

/home/user/bin/basename: fork: retry: No child processes
/home/user/bin/basename: fork: retry: No child processes
...
/home/user/bin/basename: fork: Resource temporarily unavailable

最后显示出了预期的结果。

这里发生了一些棘手的事情。它是什么?

答案1

好的,我明白了。第三行中的 basename 命令不会启动 basename linux 工具,但它会递归启动此脚本。因此,像标准 linux 程序那样命名脚本并不好。要使脚本使用名称“basename”工作,它必须使用 basename 的完整路径名。

PROGNAME=$(/usr/bin/basename $0)

相关内容