当前位置:首页 » 编程软件 » linux函数脚本

linux函数脚本

发布时间: 2025-01-11 08:52:49

‘壹’ linux system 函数

最近工作中在 Linux 下,某些指定的程序需要调用指定的 shell 脚本完成指定工作,以前也曾经做过类似的功能,调用 system 函数执行指定的脚本,以前并不关心 shell 脚本是否执行成功了,现在的功能需要根据 shell 脚本执行成功与否,于是查询了下 system 函数的说明,有此文以做笔记之用。

功能:调用/bin/sh -c 执行指定的脚本 command

常规使用方法:

关于返回值:

答案是 都错

man手册

看着挺晕的,但是如果对于 system 的执行过程了解的话,就很容易理解了,函数执行分为以下几个阶段。
阶段1:创建子进程等准备工作。如果失败,返回-1
阶段2:调用 /bin/sh 拉起脚本,如果拉起失败或者shell未正常执行,原因值被写入ret中
阶段3:如果 shell 脚本执行成功, shell 脚本的返回值写入ret中

从上面可知,不管 shell 脚本返回什么值,只要调用了/bin/sh,并且执行过程没有被信号中断,都算正常结束。因为脚本是在子进程中执行的,所以要想获取脚本是否执行成功的方法只能用系统提供的两个宏。

由于我们一般在 shell 中会通过返回值判断脚本是否执行成功,成功返回0,成功返回整数。所以判断一个脚本是否执行成功,应该满足三个条件:

注意:当 shell 脚本不存在时、没有执行条件等,前两个条件也会成立,此时WEXITSTATUS(ret)为127,所以shell脚本中不能将127作为返回值,shell脚本中的异常返回值最好从1开始递增,成功返回0。

system 用起来,看则简单,实则不那么简单,有很多隐藏的坑,需要自己深入理解原理,才能更好地使用,也可以用其他实现方式完成相同的功能。
最后对自己说,多写,多思,多总结

‘贰’ LINUX:编写一个shell脚本,并利用函数实现数列求和运算

#!/bin/bash
sum=0
if[$#-ne2]
then
echo"Pleaseinputtwonumbers!"
elif[$1-gt$2]
then
echo"."
else
foriin$(seq$1$2)
do
sum=`expr$sum+$i`
done
echo""$1~$2"sumis$sum"
fi
#执行结果
#[root@localhostopt]#./b.sh36
#"3~6"sumis18
#[root@localhostopt]#./b.sh3
#Pleaseinputtwonumbers!
#[root@localhostopt]#./b.sh356
#Pleaseinputtwonumbers!
#[root@localhostopt]#./b.sh32
#.
#[root@localhostopt]#./b.sh325
#"3~25"sumis322

‘叁’ 在linux中怎么运行脚本函数

1、同一脚本文件中的函数:
#!/bin/sh
function func1()
{
echo $1
}
func1 "Hello world!"

2、其它脚本文件中的函数:
func.sh文件内容如下(其中定义了函数func1,需要1个参数):
#!/bin/sh
function func1()
{
echo $1
}
主程序脚本:
#!/bin/sh
. func.sh
func1 "Hello world!"

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:569
制作脚本网站 发布:2025-10-20 08:17:34 浏览:857
python中的init方法 发布:2025-10-20 08:17:33 浏览:556
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:738
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:659
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:980
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:231
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:89
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:781
python股票数据获取 发布:2025-10-20 07:39:44 浏览:685