关于linux脚本执行的顺序,下面的代码是否按照顺序一步一步的执行的啊!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于linux脚本执行的顺序,下面的代码是否按照顺序一步一步的执行的啊!相关的知识,希望对你有一定的参考价值。

#!/bin/bash
cd /dxc/
time=$(date -d "yesterday" +"%Y%m%d");
mkdir $time;
find . -name "*$time*" -exec mv ./$time \;
tar -zcvf $time.tar.gz $time;
rm $time;
mv $time.tar.gz a;
rm -rf $time.tar.gz;

是的 没有 循环、判断等语法的时候 都是顺序执行,shell是面向过程的编程 参考技术A 所有的程序都是这样的, 都是一步步的来的
如果这个方面shell编程 有疑问, 以后都可以指导一下的。
please look me 网名
参考技术B 上面代码是按照一步一步执行的没有问题!

错误记录Kotlin 代码运行时报错 ( 成员属性初始化顺序是按照从上到下顺序进行的 , 上面的属性不要调用下面未进行初始化的属性 )

文章目录


该问题的本质就是 , 成员属性初始化顺序是按照从上到下顺序进行的 , 上面的属性不要调用下面未进行初始化的属性 ;





一、报错信息



执行下面的代码 :

class Hello(_age: Int)
    var name: String = initName()
    var age = _age

    fun initName() = "Tom $age"


fun main() 
    var h = Hello(18)
    println(h.name)

得到的结果是 :

Tom 0

在上述代码的构造函数中 , 传入了 _age 临时变量值为 18 , 给 age 赋值 18 , 但是最终打印出来的数据为 0 ;





二、问题分析



Kotlin 类 对象在实例化 时会执行一系列的 初始化操作 , 这些操作按照如下顺序执行 :

  • 主构造函数 中属性赋值
  • 类中的属性赋值
  • init 初始化块 中的代码执行
  • 次构造函数 中的代码执行

在下面的代码中 ,

class Hello(_age: Int)
    var name: String = initName()
    var age = _age

    fun initName() = "Tom $age"

首先 , 主构造函数 中 只提供了一个临时变量 _age , 没有对成员属性赋值 ;

然后 , 开始对 类中的属性赋值 , 先给 name 属性赋值 , 该赋值调用了 initName 函数 , 在该函数中调用了 age 成员属性 , 但是此时 age 属性还没有赋值 , 使用的是默认值 0 ; 之后才对 age 进行赋值 ;

因此最终打印出的 name 结果是 Tom 0 ;





三、解决方案



成员属性初始化顺序是按照从上到下顺序进行的 , 上面的属性不要调用下面未进行初始化的属性 ;

调换 age 属性与 name 属性的顺序 , 先对 age 进行赋值 , 即可得到想要的结果 ;

class Hello(_age: Int)
    var age = _age
    var name: String = initName()

    fun initName() = "Tom $age"


fun main() 
    var h = Hello(18)
    println(h.name)

执行结果 :

Tom 18

以上是关于关于linux脚本执行的顺序,下面的代码是否按照顺序一步一步的执行的啊!的主要内容,如果未能解决你的问题,请参考以下文章

shell 一次按顺序执行多个脚本

错误记录Kotlin 代码运行时报错 ( 成员属性初始化顺序是按照从上到下顺序进行的 , 上面的属性不要调用下面未进行初始化的属性 )

错误记录Kotlin 代码运行时报错 ( 成员属性初始化顺序是按照从上到下顺序进行的 , 上面的属性不要调用下面未进行初始化的属性 )

shell或bat脚本是不是顺序执行,是多线程吗,会不等待java执行结果吗

ThinkPHP3.2版本安全更新

Java类的各种成员初始化顺序如:父子类继承时的静态代码块,普通代码块,静态方法,构造方法,等先后顺