函数在脚本中不起作用 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)";
我正在 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)";