基本上,我想编写一个bash脚本,其中我将使用特雷多生成几个大文件,然后使用这些文件运行一些命令。
据了解(显然)在命令运行之前需要生成heredoc文件--但是,在这种安排中让我感到恼火的是,在编写命令代码之前,我还必须编写'heredoc‘语句代码。
因此,我想我应该用一个函数来编写heredoc语句--但这里的问题仍然是一样的:第24章。函数说:
函数定义必须在第一次调用之前。没有“声明”函数的方法,例如,在C中。
事实上,是这样的:
$ cat > test.sh <<EOF
testo
function testo {
echo "a"
}
EOF
$ bash test.sh
test.sh: line 1: testo: command not found然后,我想也许我可以放置一些标签,然后跳过GOTO,比如(伪代码):
$ cat > test.sh <<EOF
goto :FUNCLABEL
:MAIN
testo
goto :EXIT
:FUNCLABEL
function testo {
echo "a"
}
goto MAIN
:EXIT..。但事实证明,巴什后藤也不存在。
我唯一的目标是-我想首先编写脚本文件的“核心”,大约有五个-六个命令;然后才在脚本文件(可能有数百行)中编写heredoc语句;遗传首先使我很难阅读代码。有什么办法做到这一点吗?
发布于 2011-11-23 21:10:36
一种常见的技术是:
#!/bin/sh
main() {
cmd_list
}
cat > file1 << EOF
big HEREDOC
EOF
main "$@"发布于 2011-11-23 21:09:42
在Bash中,您必须在调用整个函数之前定义它。如果您想首先编写核心脚本,那么您可以在另一个脚本文件中编写heredoc语句,并在您愿意的时候调用它,并将返回的值(可能是)分配给您的核心脚本。
发布于 2011-11-23 21:12:51
BASH线性地扫描文件,并在遇到它们时执行语句,就像在命令行中那样。我看到有两种方法可以做你想做的事。首先,您可以在一个单独的文件(例如helperfile.sh)中编写代码生成的本地文档等,并使用. helperfile.sh进行源代码。这可能是最好的了。您还可以在开始时编写一个函数(可能是main),它可以执行您想要的操作,然后编写出本地文档代码,然后在底部调用main。
https://stackoverflow.com/questions/8249040
复制相似问题