当前位置:首页 » 编程软件 » shell调用其他脚本变量

shell调用其他脚本变量

发布时间: 2023-10-30 23:49:11

㈠ Linux的shell脚本for循环怎么调用位置变量

1、利用$@, $#, $*参数或shift移位参数进行循环
2、例1
#!/bin/sh
while [ $# -gt 0 ]; do
echo $1
shift;
done
3、例2
#!/bin/sh
until (($#==0)); do
echo $1
shift;
done
4、例3
#!/bin/sh
for x in $*;do
echo $x
done
5、例4
#!/bin/sh
for x in $@;do
echo $x
done

㈡ 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变量传递给父shell,中间可以保存个临时文件让父shell去读。
下边是一个子shell,传递给父shell的一个例子,仅做参考
#!/bin/bash
(
subvar="hello shell"
echo "$subvar" > temp.txt
)
read pvar < temp.txt
echo $pvar

㈣ 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() 同样的子进程做同样的事情。

㈤ hell 如何在bash脚本中连接两个字符串变量

bash在一个脚本里引用另一个脚本定义的变量有3种方法:

  • fork(/directory/script.sh)

    fork是最普通的,就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本.

    运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候,parent-shell还在。

    sub-shell执行完毕后返回parent-shell.sub-shell从parent-shell继承环境变量.但是sub-shell中的环境变量不会带回parent-shell

  • exec(exec/directory/script.sh)

    exec与fork不同,不需要新开一个sub-shell来执行被调用的脚本.被调用的脚本与父脚本在同一个shell内执行。但是使用exec调用一个新脚本以后,父脚本中exec行之后的内容就不会再执行了。这是exec和source的区别

  • source(source/directory/script.sh)

    与fork的区别是不新开一个sub-shell来执行被调用的脚本,而是在同一个shell中执行.所以被调用的脚本中声明的变量和环境变量,都可以在主脚本中得到和使用.

  • 可以通过下面这两个脚本来体会三种调用方式的不同:

    1.sh

    #!/bin/bash

    A=B

    echo"PIDfor1.shbeforeexec/source/fork:$$"

    exportA

    echo"1.sh:$Ais$A"

    case$1in

    exec)

    echo"usingexec…"

    exec./2.sh;;

    source)

    echo"usingsource…"

    ../2.sh;;

    *)

    echo"usingforkbydefault…"

    ./2.sh;;

    esac

    echo"PIDfor1.shafterexec/source/fork:$$"

    echo"1.sh:$Ais$A"

    2.sh

    #!/bin/bash

    echo"PIDfor2.sh:$$"

    echo"2.shget$A=$Afrom1.sh"

    A=C

    exportA

    echo"2.sh:$Ais$A"

    执行情况:

    $./1.sh

    PIDfor1.shbeforeexec/source/fork:5845364

    1.sh:$AisB

    usingforkbydefault…

    PIDfor2.sh:5242940

    2.shget$A=Bfrom1.sh

    2.sh:$AisC

    PIDfor1.shafterexec/source/fork:5845364

    1.sh:$AisB

    $./1.shexec

    PIDfor1.shbeforeexec/source/fork:5562668

    1.sh:$AisB

    usingexec…

    PIDfor2.sh:5562668

    2.shget$A=Bfrom1.sh

    2.sh:$AisC

    $./1.shsource

    PIDfor1.shbeforeexec/source/fork:5156894

    1.sh:$AisB

    usingsource…

    PIDfor2.sh:5156894

    2.shget$A=Bfrom1.sh

    2.sh:$AisC

    PIDfor1.shafterexec/source/fork:5156894

    1.sh:$AisC

    $

㈥ 如何在shell脚本里调用另一个shell脚本

子shell变量传递给父shell,中间可以保存个临时文件让父shell去读。下边是一个子shell,传递给父shell的一个例子,仅做参考#!/bin/bash(subvar="helloshell"echo"$subvar">temp.txt)readpvar

热点内容
hp存储扩容 发布:2024-11-17 23:29:16 浏览:569
在ftp中put表示什么 发布:2024-11-17 23:29:12 浏览:383
mvc多文件上传 发布:2024-11-17 23:13:56 浏览:155
玩游戏硬盘缓存32m 发布:2024-11-17 23:03:42 浏览:525
蓝光存储系统 发布:2024-11-17 23:03:41 浏览:436
地平线4提示配置低于最低怎么办 发布:2024-11-17 22:54:38 浏览:610
注册银行卡账户密码填什么 发布:2024-11-17 22:54:35 浏览:537
java压缩上传图片 发布:2024-11-17 22:26:59 浏览:627
plc编程课件 发布:2024-11-17 22:18:23 浏览:469
我的世界服务器信号一直在检测 发布:2024-11-17 22:09:52 浏览:547