Shell

推荐列表 站点导航

当前位置:首页 > 脚本编程 > Shell >

c程序调用shell脚本获取返回值方法

来源:网络整理  作者:网友投稿  发布时间:2020-12-26 20:45
流程示意图: shell脚本: 文件名:getpath #!/bin/bash curpath=$PWD temp1=$(mount) temp2=${temp1%%$curpath*} temp3=${temp2%*on*} mountpath=$...

c程序调用shell脚本获取返回值方法

 

shell脚本:

文件名:getpath

#!/bin/bash

curpath=$PWD

temp1=$(mount)

temp2=${temp1%%$curpath*}

temp3=${temp2%*on*} 

mountpath=${temp3:0-9:9}

echo $mountpath

exit 0

pwd命令获取的结果: /media/xx/usb

mount命令获取结果:……/dev/sdb1 on /media/xx/usb ……

这里为什么pwd命令和mount命令的调用方式不同,本人暂时也不太清楚。

解析:

curpath=$PWD代表执行系统命令pwd,获取当前路径,存储与变量curpath中。 curpath=/media/xx/usb

temp1=$(mount)代表执行系统命令mount,获取当前挂载情况,存储与变量temp1中。 temp1=……/dev/sdb1 on /media/xx/usb ……

temp2=${temp1%%$curpath*} 代表从mount获取的结果中temp1,从末尾删除包含curpath最长字符。temp2=……/dev/sdb1 on

temp3=${temp2%*on*} 代表从上一步删除的结果中,从右侧删除第一个包含“on”字样的内容。temp3=……/dev/sdb1

mountpath=${temp3:0-9:9} 代表从上一步结果temp3中,裁剪由保留右侧的9个字符。 所以mountpath=/dev/sdb1

最后输出mountpath。

 

C程序:

文件名:test.c

#include <stdio.h>

void main()

{

FILE *fp;

char buffer[80];

fp = popen("./getpath","r");

fgets(buffer,sizeof(buffer),fp);

printf("\n%s\n",buffer);

pclose(fp);

}

解析:popen一般应用于进程管道,这里的应用场合也解释的通,函数原型声明FILE *popen(const char *command, const char *open_mode)

这里 fp = popen("./getpath","r"); 以读方式打开了shell脚本getpath,即mountpath。

通过 fgets(buffer,sizeof(buffer),fp); 获取了getpath运行结果,即mountpath。

然后通过printf打印出来。

上述程序的功能是从U盘的挂载点获取U盘的SCSI操作路径。

相关热词: shell

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/jiaob/shell/9534.shtml

相关文章
最新文章
PHP生成奖状 PHP生成奖状

时间:2021-01-06

python实现输入五个数并求 python实现输入五个数并求

时间:2021-01-06

php检测网站是否正常打开 php检测网站是否正常打开

时间:2021-01-05

python怎么右对齐 python怎么右对齐

时间:2021-01-05

Python3爬虫入门之Python3的安 Python3爬虫入门之Python3的安

时间:2021-01-05

如何用PHP接收http请求头信 如何用PHP接收http请求头信

时间:2021-01-05

数据库怎么连接用php写的 数据库怎么连接用php写的

时间:2021-01-05

php后缀怎么打开 php后缀怎么打开

时间:2021-01-05

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

c程序调用shell脚本获取返回值方法

2020-12-26 编辑:网友投稿

c程序调用shell脚本获取返回值方法

 

shell脚本:

文件名:getpath

#!/bin/bash

curpath=$PWD

temp1=$(mount)

temp2=${temp1%%$curpath*}

temp3=${temp2%*on*} 

mountpath=${temp3:0-9:9}

echo $mountpath

exit 0

pwd命令获取的结果: /media/xx/usb

mount命令获取结果:……/dev/sdb1 on /media/xx/usb ……

这里为什么pwd命令和mount命令的调用方式不同,本人暂时也不太清楚。

解析:

curpath=$PWD代表执行系统命令pwd,获取当前路径,存储与变量curpath中。 curpath=/media/xx/usb

temp1=$(mount)代表执行系统命令mount,获取当前挂载情况,存储与变量temp1中。 temp1=……/dev/sdb1 on /media/xx/usb ……

temp2=${temp1%%$curpath*} 代表从mount获取的结果中temp1,从末尾删除包含curpath最长字符。temp2=……/dev/sdb1 on

temp3=${temp2%*on*} 代表从上一步删除的结果中,从右侧删除第一个包含“on”字样的内容。temp3=……/dev/sdb1

mountpath=${temp3:0-9:9} 代表从上一步结果temp3中,裁剪由保留右侧的9个字符。 所以mountpath=/dev/sdb1

最后输出mountpath。

 

C程序:

文件名:test.c

#include <stdio.h>

void main()

{

FILE *fp;

char buffer[80];

fp = popen("./getpath","r");

fgets(buffer,sizeof(buffer),fp);

printf("\n%s\n",buffer);

pclose(fp);

}

解析:popen一般应用于进程管道,这里的应用场合也解释的通,函数原型声明FILE *popen(const char *command, const char *open_mode)

这里 fp = popen("./getpath","r"); 以读方式打开了shell脚本getpath,即mountpath。

通过 fgets(buffer,sizeof(buffer),fp); 获取了getpath运行结果,即mountpath。

然后通过printf打印出来。

上述程序的功能是从U盘的挂载点获取U盘的SCSI操作路径。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/jiaob/shell/9534.shtml

相关文章

风云图片

推荐阅读

返回Shell频道首页