从 ksh 中的下标返回值

从 ksh 中的下标返回值

我想从脚本内部调用脚本,如下所示

weeknum=$(getweek )

这里 getweek 是一个脚本文件。如何编写子脚本文件,使其返回值到weeknum。我应该使用 return 或 exit 并将状态作为返回值

答案1

您可以很好地用于echo此目的。

$ cat new
echo 1
$ number=$(./new)
$ echo $number
1

我认为这达到了目的。另请注意,new上面是您要编写的脚本。

如果我错误地假设了什么,请在下面评论

答案2

语法$(cmd)捕获标准输出of cmd(删除尾随换行符)。

所以你所要做的就是输出getweek信息:

#! /bin/sh -
date +%V # or %U or %W

date在其继承自的 stdout 上输出周数sh,在 的情况下,weeknum=$(getweek)由 shell 将其设置为管道或套接字对,在其另一端,shell 读取该输出以存储在变量中weeknum

您还可以在退出状态中返回周数:

#! /bin/sh -
exit "$(date +%W)"

您可以通过以下方式获得:

getweek
weeknum=$?

但我建议不要这样做。退出状态应保留用于错误报告或限制为真/假值。

通常在上面,如果出现错误(在分叉进程、执行date或 时sh)或进程被终止,您将得到一个非零退出状态,不应将其视为周数

答案3

你可以试试下面这个

output=$(sh <scriptname>)

我觉得在这种情况下,您也可以尝试在脚本中编写一个函数,这应该有助于实现您的目标。

答案4

使用任何命令将值赋给标准输出并读取它。

# 一些下标
# 做一点事
echo "my value is here" # echo 是一种将某些内容放入标准输出的方法

赋予执行权限。对于下标:

chmod a+rx 一些下标

并使用它

val=$(./some下标)
echo "$val" # 将回显我的值在这里

return 和 exit 用于告诉调用者是否可以。不适用于返回值。

相关内容