繁体   English   中英

函数在脚本外壳中不起作用

[英]function doesn't work in script shell

我正在学习Linux中的脚本外壳。 现在我在创建函数时遇到了一些问题。 我正在使用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

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

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

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

请记住:

  • 为了内部使用test.sh任何函数(或其他定义)存在于votolaurea.lib ,则需要使用到源它 source的命令(或它的等效. );
  • Shell不处理单引号字符串,但将其保留不变; 因此,如果要调用函数votolaurea() ,则必须将其放在加引号的字符串之外;
  • 参数使用位置参数$1$2等传递给函数。

考虑到以上几点,您应该对代码进行一些更改。

votolaurea.lib

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

test.sh

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM