shell脚本调用其他脚本
㈠ shell脚本中调用脚本
里面有个错误,time 是个命令,不能用来做变量,这是致命的!
----------------
我给个测试脚本你试一下:
.............
#!/bin/sh
flag=0
plan_hour=19
plan_minutes=47
plan_time=`echo -n "$plan_hour";echo -n "$plan_minutes"`
clear
while true
do
hour=`date +"%H"`
minutes=`date +"%M"`
seconds=`date +"%S"`
time1=`echo -n "$hour";echo -n "$minutes"`
clear
echo -n "现在的时间为: "
echo -n $hour
echo -n :
echo -n $minutes
echo -n :
echo -n $seconds
if [ "$time1" -eq "$plan_time" ]; then
flag=1
clear
echo -n "3秒后关闭 1.sh"
sleep 3
ps -ef|grep "sh 1.sh"|grep -v grep|awk '{print $2}'|xargs kill
clear
echo "1.sh 已经结束;2.sh 1分钟后唤醒 1.sh"
sleep 59
fi
sleep 1
if [ $flag -eq 1 ]; then
sh 1.sh
exit 0
fi
done
===============
脚本一开始预定关闭 1.sh 的时间。
在未到定时时,就显式时间。
定时时间到,给出杀死 1.sh 的提示,3秒后杀死,然后再 1 分钟后再唤醒 1.sh 进程。唤醒 1.sh 后,2.sh 也就跟着退出了。
------------------------------------------------------
2.sh 时间设对了是可以杀死 1.sh 的。
如果按照你的要求,我觉得写个程序应该更好处理些,参考代码如下:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
int main()
{
pid_t pid;
while(1) {
pid = fork();
switch(pid) {
case -1:
perror("fork failed");
exit(1);
case 0:
while(1) {
printf("I'm 1.sh ,I'm running........\n");
sleep(1);
}
default:
sleep(5);
kill(pid, SIGKILL);
printf("child over\n");
sleep(40);
break;
}
}
return 0;
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
上面程序,先 fork() 出一个子进程,相当于 1.sh,然后你在子进程里做你要做的事情。父进程在 5s 后(相当于每天预设的一个时间,每天的时间设定可用相关的函数进行设置检测)杀死子进程,然后睡眠 40s,醒来后,又循环 fork() 同样的子进程做同样的事情。
㈡ 如何在shell脚本里调用另一个shell脚本
子shell变量传递给父shell,中间可以保存个临时文件让父shell去读。下边是一个子shell,传递给父shell的一个例子,仅做参考#!/bin/bash(subvar="helloshell"echo"$subvar">temp.txt)readpvar
㈢ shell脚本中如何跨脚本调用其他脚本中的函数
这个前提是在你脚本运行过程中,其他脚本也需要运行并调用,然后可以把函数放到环境变量中,再从脚本中读取环境变量
㈣ shell脚本调用外部脚本的问题
估计是因为脚本1中使用了cd命令改变了当前路径,脚本2中继承了脚本1中的当前路径;而一旦脚本1结束回到主shell,这个当前路径也就不复存在。
如果在脚本2基于这个当前路径启动jar包前,脚本1结束了,那么当前路径肯定回到了主shell的设置去了,jar包就启动不了了。
任何外部调用的shell命令执行都会产生一个进程,都会有一个pid,即使最终执行是返回错误。
所以,两点建议:
1)脚本1调用2的命令行后加上 &,置入后台运行,这样就不会因为脚本1的结束而影响脚本2的运行。
2)脚本中尽量不要用cd命令跳转目录,尽量使用绝对路径。
㈤ shell脚本怎么调用另外脚本中的参数
另外的脚本中输出用echo,脚本调用a=`bash scriptA.sh`
㈥ shell调用其他脚本函数
使用位置参数:
b.sh里面这样写
#!/bin/bash
basha.sh10020
a.sh里这样写
#!/bin/bash
number=$1
number_1=$2
functionfun1(){
echo$1
}
functionfun2(){
echo$1
}
fun1$number
指出几点问题:
你的原脚本里为什么fun_get=fun1
这样做没什么意义;
fun2并没有用到。
㈦ 如何在shell脚本中调用另一个shell的结果
可以将通用脚本获取的结果直接输出,比如你的通用脚本在/path/to/getDate.sh
内容比如如下:
echo
"2013-02-26"
然后在另外一个脚本里可以这样获得它的输出
Date=`sh
/path/to/getDate.sh`
#
注意这里不是
引号
,而是反引号就是Esc下面1左边的键
现在Date变量的值就是"2013-02-26"
㈧ shell脚本怎样调另一个脚本文件
Shell脚本中引用、调用另一个脚本文件的2种方法
这篇文章主要介绍了Shell脚本中引用、调用另一个脚本文件的2种方法,本文介绍了两种方法的语法,然后给出实际使用实例和一些要注意的地方,需要的朋友可以参考下
在Java,Python中,可以用import的方式来进行脚本或模块之间调用,例如:
复制代码
代码如下:
>>> import math
>>>
math.sqrt(4)
2.0
在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢?
方法一: . ./subscript.sh
方法二: source ./subscript.sh
注意:
1.两个点之间,有空格,千万注意.
2.两个脚本不在同一目录,要用绝对路径
3.为简单起见,通常用第一种方法
例如:
复制代码
代码如下:
main.sh #主脚本
subscripts.sh
#子脚本,或者说被调脚本
[code]
[code]
###subscripts.sh 脚本内容如下:###
#!/bin/bash
string="Hello,World! \n"
复制代码
代码如下:
###main.sh 脚本内容如下###
#!/bin/bash
. ./subscripts.sh
echo -e ${string}
exit 0
输出结果:
复制代码
代码如下:
# chmod +x ./main.sh
# ./main.sh
Hello,World!
#
注意:
1.被调脚本可以没有执行权限,调用脚本必须有可执行权限
2.chmod +x ./main.sh
#注意这里要有点,否则bash脚本可能找不到
㈨ shell脚本怎么随机调用其他脚本
1. 计算出当前目录下以.sh结尾的脚本数目(假设头脚本不在这个文件夹里):num=`ls *.sh|wc -l`
2. 获取当前秒数:sec=`date +%s`
3. 基于脚本数目计算随机数(范围1~$num):randNum=`expr $sec % $num + 1`
4. 根据随机数调用脚本:sh /path/`ls|sed -n ${randNum}p`
㈩ shell脚本for循环中如何调用别的程序
把你的.C文件编译成可执行文件,比如你将hello.c编译成文件名为hello的可执行文件,且该可执行文件在目录/usr/bin下,你就可以这么来重复调用该程序:
#!/bin/bash
i=1
for((i=1;i<=300;i++));do
/usr/bin/hello #文件路径不限
done
试试,应该可以!