首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数在脚本shell中不工作。

函数在脚本shell中不工作。
EN

Stack Overflow用户
提问于 2015-03-10 15:02:47
回答 2查看 1.5K关注 0票数 1

我正在学习Linux中的脚本shell。现在我在函数的创建上遇到了一些问题。我在做CentOS。

这是函数的代码:

代码语言:javascript
复制
#votolaurea.lib
votolaurea() {
voto=$(($voto * 11))
voto=$((voto /3))
echo "Il voto sarà $voto";
}

这就是调用这个函数的脚本

代码语言:javascript
复制
#!/bin/bash
~/imieiscript/votolaurea.lib
echo "Give me the number"
read media
echo 'votolaurea.lib $media'

但产出如下:

代码语言:javascript
复制
Give me the number
3 //this is my number in input
votolaurea.lib $media

它不调用函数,但打印所有命令。为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-10 17:04:14

如果我正确地解释了您的代码,您就创建了两个文件:

  • 一个名为votolaurea.lib,包含函数votolaurea
  • 另一个未指定(让我们称之为test.sh)。

记住:

  • 为了在test.sh中使用votolaurea.lib中的任何函数(或其他定义),您需要使用source命令(或其等效的.)来获取它;
  • 单引号字符串不是由shell处理,而是保持不变;因此,如果要调用函数votolaurea(),就必须将其放在引号字符串之外;
  • 使用位置参数$1$2等将参数传递给函数。

考虑到前面的要点,您应该对代码进行一些更改。

votolaurea.lib

代码语言:javascript
复制
#votolaurea.lib
votolaurea() {
    echo $(($1 * 11 / 3 ))
}

test.sh

代码语言:javascript
复制
#!/bin/bash
source ~/imieiscript/votolaurea.lib
echo "Give me the number"
read media
echo "Il voto sarà $(votolaurea $media)";
票数 3
EN

Stack Overflow用户

发布于 2015-03-10 15:09:03

若要将字符串作为命令执行,应使用``$()

代码语言:javascript
复制
echo `votolaurea.lib $media`
echo $(votolaurea.lib $media)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28967124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档