【问题标题】:Bash script; how to use vars and funcs defined after commandbash 脚本;如何使用命令后定义的变量和函数
【发布时间】:2016-05-19 23:08:02
【问题描述】:

如何使用命令后定义的变量或函数。

变量

#!/bin/bash

echo Hello "$who"
who="World"

功能

#!/bin/bash

function_name

function_name() {
echo Hello World
}

我还听说有一个命令可以在执行任何命令之前读取整个 bash 脚本,这适用于我的情况。不过如果有更精准的方法就好了。

更深入

#!/bin/bash

h=Hello

echo $h "$who"

var1=World

who=$(cat <<HEREDOC
You
Me
$var1
HEREDOC
)

【问题讨论】:

  • 您不能像在 C 中那样在定义之前声明和使用函数。您为什么要这样做?您是否只想在脚本末尾定义函数/变量以提高可读性?
  • @thatotherguy 你是对的,我在脚本中有一个heredoc,希望它位于命令下方。
  • 我不关注。您是否有一个包含变量的此处文档,并且您希望进一步定义变量?你可以只使用函数,比如main() { echo "Hello $who"; }; ...; who="world"; main 吗?
  • @thatotherguy 你又是对的,我希望这里的文档中有变量,并且通常只是在命令的底部以提高可读性。命令和此处的文档都很大......还要注意,我在命令之前确实有变量,我不想指向外部文档。
  • 可以使用我建议的方法吗?没有办法绕过这样一个事实,即您必须在使用函数/变量之前对其进行定义,但您可以通过这些方式控制流程

标签: linux bash function variables


【解决方案1】:

变量和函数总是必须在使用前定义。这是因为函数定义实际上是在当前上下文中分配名称的命令,而不像在 C 中它们仅提供名称的实现。

您可以改为使用控制流来确保定义在您的代码之前执行,无论它们在文件中的相对布局如何:

main() {
  echo "Hello $var"
}

var="world"
main

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2015-04-24
    • 2021-01-28
    • 1970-01-01
    • 2010-10-22
    • 2011-10-16
    • 1970-01-01
    相关资源
    最近更新 更多