我在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
它不会调用该函数,但会打印所有命令。为什么呢?
答案 0 :(得分:3)
如果我正确解释了您的代码,您创建了两个文件:
votolaurea.lib
的文件,其中包含函数votolaurea
; test.sh
)。请记住:
test.sh
中使用votolaurea.lib
内的任何函数(或其他定义),您需要使用source
命令使用来源(或它相当于.
); votolaurea()
,你必须把它放在引用的字符串之外; $1
,$2
等将参数传递给函数。考虑到以前的要点,您应该对代码进行一些更改。
#votolaurea.lib
votolaurea() {
echo $(($1 * 11 / 3 ))
}
#!/bin/bash
source ~/imieiscript/votolaurea.lib
echo "Give me the number"
read media
echo "Il voto sarà $(votolaurea $media)";
答案 1 :(得分:0)
要将字符串作为命令执行,您应该使用``
或$()
:
echo `votolaurea.lib $media`
echo $(votolaurea.lib $media)