函数在脚本中不起作用 shell

function doesn't work in script shell

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

这是函数的代码:

#votolaurea.lib
votolaurea() {
voto=$(($voto * 11))
voto=$((voto /3))
echo "Il voto sarà $voto";
}

这是调用该函数的脚本

#!/bin/bash
~/imieiscript/votolaurea.lib
echo "Give me the number"
read media
echo 'votolaurea.lib $media'

但输出是:

Give me the number
3 //this is my number in input
votolaurea.lib $media

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

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

echo `votolaurea.lib $media`
echo $(votolaurea.lib $media)

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

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

记住:

  • 为了在 test.sh 中使用 votolaurea.lib 中存在的任何函数(或其他定义),您需要使用 [=17] source it =] 命令(或等效的 .);
  • 单引号字符串不被shell处理,但保持不变;因此如果你想调用函数 votolaurea() 你必须把它放在引号字符串之外;
  • 使用位置参数 </code>、<code> 等将参数传递给函数

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

votolaurea.lib

#votolaurea.lib
votolaurea() {
    echo $(( * 11 / 3 ))
}

test.sh

#!/bin/bash
source ~/imieiscript/votolaurea.lib
echo "Give me the number"
read media
echo "Il voto sarà $(votolaurea $media)";