在bash / Shell脚本中调用函数

时间:2014-08-09 03:16:05

标签: bash shell

当我在shell脚本中调用函数时,它不起作用

testfunction

但如果我打电话给下面这样的功能

$(testfunction);

有什么想法?我在Ubuntu上运行bash shell

谢谢你, Sambhav

大家好,这是一个示例脚本和函数decl。并打电话。正如问题中提到的,函数调用 - 函数不起作用,但$(函数正在工作)

#!/bin/bash 
TITLE=My Title"; 
########FUNCTIONS 
### Function Declaration 
test() { echo "echoing test"; } 
cat << EOF <html> <head> <TITLE>"$TITLE"</TITLE>
</head>
</body> 
### Calling the function here - Not working test 
#### The Below function call is working $(test) 
</body> 
</html> 
EOF 

1 个答案:

答案 0 :(得分:2)

$(cmd)扩展为一个字符串,其中包含已执行cmd的结果。它通常不与函数一起使用,但它可以。请参阅此插图,它以两种样式调用该函数:

$ cat sample.sh
#!/bin/sh
bla() {
  echo something
}
# print something
bla
# record something
BLA=$(bla)
echo recorded: $BLA
###
$ ./sample.sh
something
recorded: something

跟进你的评论,你的问题似乎就是&#34; here document&#34;与<<一起使用。这里的文档基本上是一个多行字符串:

echo "this is a string, bla is not recognized as a function"
echo "this is a string, $(bla) executes the function and replaces the output"
cat << EOF
Multi Line
$(bla)
Document
EOF

或者你可以结束这里的文件:

cat << EOF1
<html><header><titl
<title>test</title></header>
<body>
EOF1
# this section is script code, not here-document
bla
#
cat << EOF2
</body></html>
EOF2