shell调用脚本文件
1. shell 中怎么调用perl脚本
调用带参数的脚本,需要首先设置,举例如下:
test.py按行解释如下:
脚本中有汉字的话,需要声明文件编码格式;
导入sys模块,这个模块是用来获取参数列表的;
sys.argv是一个列表,第一个是文件名,之后依次是参数列表;
打印输出,这一步不需要多讲;
保存到c:\users\YYC\Desktop\test.py;
调用操作步骤:
打开命令行;
输入python 文件名 第一个参数 第二个参数.....(参数之间用空格区分);
一定要注意参数个数,要以文件名开始。
2. 如何在shell脚本里调用另一个shell脚本
子shell变量传递给父shell,中间可以保存个临时文件让父shell去读。下边是一个子shell,传递给父shell的一个例子,仅做参考#!/bin/bash(subvar="helloshell"echo"$subvar">temp.txt)readpvar
3. Shell脚本的几种执行方式之区别
1、bash 脚本文件或者 sh 脚本文件,通过这种方式可以运行没有执行权限或者在脚本里面没有指定解释器的脚本;
2、./脚本文件或者脚本文件全路径,通过这种方式执行脚本文件需要脚本文件有执行权限,并且在脚本文件里面指定了正确的解释器;
3、source 脚本文件或者. 脚本文件(.和脚本文件之间有空格),这种运行方式是在当前shell下运行,运行后脚本中定义的变量不会释放,这也是此种方式运行脚本与前三种的最大区别。例如在脚本中定义了name=GG,那么在脚本运行完成之后,echo $name仍会显示GG
4. shell脚本怎么调用其他shell脚本
在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!
#
5. shell脚本调用外部脚本的问题
估计是因为脚本1中使用了cd命令改变了当前路径,脚本2中继承了脚本1中的当前路径;而一旦脚本1结束回到主shell,这个当前路径也就不复存在。
如果在脚本2基于这个当前路径启动jar包前,脚本1结束了,那么当前路径肯定回到了主shell的设置去了,jar包就启动不了了。
任何外部调用的shell命令执行都会产生一个进程,都会有一个pid,即使最终执行是返回错误。
所以,两点建议:
1)脚本1调用2的命令行后加上 &,置入后台运行,这样就不会因为脚本1的结束而影响脚本2的运行。
2)脚本中尽量不要用cd命令跳转目录,尽量使用绝对路径。
6. 如何建立和执行shell脚本文件--基于linux
方法很多:
方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本。
cd/data/shell
./hello.sh
./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录
(/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo
$PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。
方法二:以绝对路径的方式去执行bash shell脚本。
/data/shell/hello.sh
方法三:直接使用bash 或sh 来执行bash shell脚本。
cd/data/shell
bashhello.sh
方法四:在当前的shell环境中执行bash shell脚本。
cd/data/shell
.hello.sh
7. 如何在shell中执行简单的javascript脚本
javascript脚本的运行需要一个JS的执行环境(比如浏览器就是一个执行环境),不同的执行环境下有个别的差异,差异主要是和环境以及平台相关的.
如果是在windows的cmd环境下,可以使用系统自带的wscript.exe来运行简单的脚本. 例如:
R:>catc.js
varsum=0;
for(vari=0;i<10;i++){
sum+=i;
}
WScript.Echo(sum);
R:>wscriptc.js
在linux或者windows下均可以通过node.js提供的运行环境来执行js脚本,例如:
R:>catd.js
varsum=0;
for(vari=0;i<10;i++){
sum+=i;
}
console.log(sum);
R:>noded.js
45
node提供了完成的平台开发环境,可以尝试下. 需自行安装
8. 如何用SHELL命令运行一个文件
1、Shell是命令解释器,所执行的文件有两种,一种是基于ELF文件格式的可执行文件,一种是基于Shell脚本格式的脚本文件。
2、不管是可执行文件还是shell脚本,如果存在于PATH变量所指明的路径中,shell会自动寻找相应的可执行文件,用户只需要输入可执行文件名或者脚本名即可执行。
3、如果可执行文件或者Shell脚本的存放位置不在PATH变量所指明的路径中,则需要通过".”来执行,比如下面的C语言写的hello world程序,需要输入./t才可以被shell运行。
9. 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() 同样的子进程做同样的事情。