我正在尝试运行以下 bash 脚本,但它没有在终端窗口上显示任何内容,也没有出现任何错误。当我通过命令行运行它时,我尝试使用内置函数将 currentid 值显示为终端屏幕上的输出。
#! /bin/bash
currentid()
{
return 608
echo builtin currentid "$@"
}
currentid
答案1
我假设您正在尝试获取pid
脚本并在稍后将其用作变量?如果是这样,以下是一些提示:
据我所知,您不需要该
builtin
命令,因为currentid
这不是。您可以像这样看到它的作用:builtin
builtin
$ help builtin builtin: builtin [shell-builtin [arg ...]] Execute shell builtins. Execute SHELL-BUILTIN with arguments ARGs without performing command lookup. This is useful when you wish to reimplement a shell builtin as a shell function, but need to execute the builtin within the function. Exit Status: Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is not a shell builtin..
您可以使用 找到所有内置命令的列表
compgen -b
。我在这里大胆猜测一下,
currentid
你正在尝试获取pid
脚本的进程 ID。如果currentid
指的是其他内容,请纠正我。要获取脚本的当前值
pid
,可以使用$$
或$BASHPID
。您可以在Bash 参考手册。我不确定您为什么要硬编码返回 608,但如果您想将pid
脚本的更改为那样,请澄清您的问题。考虑到这一点,您的脚本将如下所示:
#!/bin/bash printf "%s" "$$"
这会
pid
安全地打印您的当前值。但请记住,您可以稍后在脚本中调用$$
或来执行任何您想要的操作。$BASHPID
还有一些一般建议:
- 这里有一个很好的答案来自我们姐妹网站的关于为什么要
prinf
使用echo
- 这Bash 参考指南非常出色地列出了所有可用的选项。
- Greg's Bash 维基有一些现实世界代码和最佳实践的很好的例子。
祝你好运!