shell for循环、循环变量值付给其他shell脚本

shell for循环、循环变量值付给其他shell脚本本文主要将在shell中如何编写for循环,并将循环变量作为下个shell脚本的参数。

大家好,又见面了,我是你们的朋友全栈君。

本文主要将在shell中如何编写for循环,并将循环变量作为下个shell脚本的参数。
shell for 循环:

#!第一种写法 类似C、Java
for ((i=1; i<=100; i ++))
do
    echo $i   
done
#!第二种写法 in应用
for i in {1..100}  
do  
    echo $i  
done 
#!第三种写法 seq 使用
for i in `seq 1 100`  
do  
    echo $i  
done  

将循环变量赋值到下一个脚本:
在运行shell脚本时候,有三种方式来调用外部的脚本,exec(exec script.sh)、source(source script.sh)、fork(./script.sh)
1、exec(exec /home/script.sh):
使用exec来调用脚本,被执行的脚本会继承当前shell的环境变量。但事实上exec产生了新的进程,他会把主shell的进程资源占用并替换脚本内容,继承了原主shell的PID号,即原主shell剩下的内容不会执行。

2、source(source /home/script.sh)
使用source或者“.”来调用外部脚本,不会产生新的进程,继承当前shell环境变量,而且被调用的脚本运行结束后,它拥有的环境变量和声明变量会被当前shell保留,类似将调用脚本的内容复制过来直接执行。执行完毕后原主shell继续运行。

3、fork(/home/script.sh)
直接运行脚本,会以当前shell为父进程,产生新的进程,并且继承主脚本的环境变量和声明变量。执行完毕后,主脚本不会保留其环境变量和声明变量。

#!main.sh主体
#!/bin/sh
a=main

echo "a is $a"
echo "PID for parent before 2.sh:$$"
case $1 in
  exec)
    echo "using exec"
    exec ./2.sh ;;
  *)
    echo "using sourcing"
    source ./2.sh ;;
esac

echo "PID FOR parent after 2.sh :$$"

echo "now m"

#!2.sh
#!/bin/sh
echo "PID FOR 2.SH:$$"

echo  "2.sh get a from main.sh is $a"

a=2.sh
export a
b=3.sh

echo "now 2.sh a is $a"

执行结果:

a is main
PID for parent before 2.sh:1162
using sourcing
PID FOR 2.SH:1162
2.sh get a from main.sh is main`这里写代码片`
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1162
now m

通过for循环,循环变量作为2.sh变量赋值并执行。

#!main主函数
#!/bin/sh
a=0
for ((i=1; i<=10; i ++))
do
        a=$i
        echo "a is $a"
        echo "PID for parent before 2.sh:$$" 
                echo "using sourcing"
                source ./2.sh
         echo "PID FOR parent after 2.sh :$$"
        echo "now a is $a"  
done

输出结果:

a is 1
PID for parent before 2.sh:1339
using sourcing
PID FOR 2.SH:1339
2.sh get a from main.sh is 1
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1339
now a is 2.sh
a is 2
PID for parent before 2.sh:1339
using sourcing
PID FOR 2.SH:1339
2.sh get a from main.sh is 2
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1339
now a is 2.sh
a is 3
PID for parent before 2.sh:1339
using sourcing
PID FOR 2.SH:1339
2.sh get a from main.sh is 3
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1339
now a is 2.sh
a is 4
PID for parent before 2.sh:1339
using sourcing
PID FOR 2.SH:1339
2.sh get a from main.sh is 4
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1339
now a is 2.sh
a is 5
PID for parent before 2.sh:1339
using sourcing
PID FOR 2.SH:1339
2.sh get a from main.sh is 5
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1339
now a is 2.sh
a is 6
PID for parent before 2.sh:1339
using sourcing
PID FOR 2.SH:1339
2.sh get a from main.sh is 6
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1339
now a is 2.sh
a is 7
PID for parent before 2.sh:1339
using sourcing
PID FOR 2.SH:1339
2.sh get a from main.sh is 7
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1339
now a is 2.sh
a is 8
PID for parent before 2.sh:1339
using sourcing
PID FOR 2.SH:1339
2.sh get a from main.sh is 8
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1339
now a is 2.sh
a is 9
PID for parent before 2.sh:1339
using sourcing
PID FOR 2.SH:1339
2.sh get a from main.sh is 9
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1339
now a is 2.sh
a is 10
PID for parent before 2.sh:1339
using sourcing
PID FOR 2.SH:1339
2.sh get a from main.sh is 10
now 2.sh a is 2.sh
PID FOR parent after 2.sh :1339
now a is 2.sh

更多内容请查看 Julywhj的博客期待您的光顾。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/163974.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 转录因子调控基因表达_转录因子的转录激活域

    转录因子调控基因表达_转录因子的转录激活域基因转录调控网络——转录因子调控网络分析转录因子(TranscriptionFactors,TFs)是指能够以序列特异性方式结合DNA并且调节转录的蛋白质。转录因子通过识别特定的DNA序列来控制染色质和转录,以形成指导基因组表达的复杂系统。转录水平的调控是基因调控的重要环节,其中转录因子(TranscriptionFactor,TF)和转录因子结合位点(TranscriptionFactorBindingSite,TFBS)是转录调控的重要组成部分。基因转录调控网络由于其可以直观地显示基

    2022年10月28日
  • c语言编写机器人程序(C程序设计教程)

    第一部分基本技能学习和实践第1讲一种新的C语言学习方式机器人与C语言学习平台任务1获得软件任务2安装软件任务3硬件连接任务4第一个程序任务5做完实验关断电源工程素质和技能归纳科学精神的培养第2讲最简单的C程序设计——机器人做算术任务1整型数据的运算和结果显示任务2浮点型数据的运算任务3字符型数据工程素质和技能归纳科学精神的培养第3讲循环程序设计——让机器人动起来C51单片机…

  • dropdownlist1 绑定 value值

    dropdownlist1 绑定 value值DropDownList1.Items.Add(newListItem(dr[“status”].ToString(),dr[“status_Id”].ToString()));里面的两个参数都必须是string类型的,第一个参数是text,第二个参数是value转载于:https://www.cnblogs.com/tiancai/archive/2011/08/1…

  • git clone克隆或下载一个仓库单个文件夹

    git clone克隆或下载一个仓库单个文件夹git学习之gitclone克隆或下载一个仓库单个文件夹有时候因为需要我们只想gitclone下仓库的单个或多个文件夹,而不是全部的仓库内容,这样就很省事,所以下面就开始教程啦在Git1.7.0以前,这无法实现,但是幸运的是在Git1.7.0以后加入了SparseCheckout模式,这使得CheckOut指定文件或者文件夹成为可能。举个例子:现在有…

  • 京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节「建议收藏」

    京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节「建议收藏」的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里,第京的季节里

  • cpu不能直接读取和执行_pc机有几个微处理器

    cpu不能直接读取和执行_pc机有几个微处理器笔记本电脑最重要的硬件是CPU(中央处理器)。它的质量直接关系到计算机的性能。CPU不好,其他硬件也很好,计算机性能也不好。因此,购买笔记本电脑时,务必要考虑CPU性能。以下编辑器分享了笔记本计算机的CPU性能排名,让我们看一下。笔记本CPU性能排名清单排名模型CPU标记值[第一名]IntelXeonE5-2687W@3.10GHz[评分:14564][第二名]IntelXeon…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号