• Shell编程概述


    一、Shell名词解释

    1.1Kernel

            Linux内核主要是为了和硬件打交道

    1.2Shell

    1. 命令解释器(command interpreter)
    2. Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言, 又是一种程序设计语言。
    3. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内 核的服务。

    1.3shell两大主流

    • sh
    1. Bourne shell(sh) ,Solaris,hpux默认shell
    2. Bourne again shell(bash ,Linux系统默认shell
    • csh:  
    1. C shell(csh)
    2. tc shell(tcsh)

    1.4、#! 声明

    告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序

    二、Shell脚本的执行

    2.1、输入脚本的绝对路径或相对路径

    注意看文件是否有执行权限, 如果没有的话, 可以给它赋予权限.

    • /root/helloworld.sh
    • ./helloworld.sh
    • 执行的必须是一个可执行文件

    2.2、bash或sh +脚本  

    • sh helloworld.sh
    • 当脚本没有x权限时,root和文件所有者通过该方式可以正常执行

    2.3在脚本的路径前再加". " source  

    • source helloworld.sh

    2.4、区别  

    • 第一种和第二种会新开一个bash,不同bash中的变量无法共享。
    • 第三种 是在同一个shell里面执行的

    Demo1:  


    执行过程分析: 

    Demo2:

    分析原因: 当你使用sh hello.sh执行shell脚本的话, 因为它在执行这个脚本会重新创建一个子进程, 而进程之间的数据是不能共享的, 所以你之前创建的那个name=张三这个变量并不能识别.但是如果你使用source hello.sh来执行脚本的话, 因为执行脚本的过程中并没有重新创建新的进程, 所以依然可以对name变量进行打印.

    那如何解决呢?

    解决办法就在于后面的关键字export

    2.5、export 

    • 可以将当前进程的变量传递给子进程去使用
    • 将来配置profile的时候 所有的变量前必须加export

     

     

  • 相关阅读:
    Java --- Spring6项目创建及注意事项
    HTML+CSS大作业【传统文化艺术耍牙15页】学生个人网页设计作品
    epoll使用与原理
    Jmeter 逻辑控制之IF条件控制器
    2022最新版-李宏毅机器学习深度学习课程-P46 自监督学习Self-supervised Learning(BERT)
    精简 Windows10
    EN 438-7建筑覆盖物装饰用层压板材产品—CE认证
    Linux-Failed to find module ‘ip_vs_fo‘
    ES日期时间格式化参数集锦
    【Vue】axios的二次封装和使用(附详细代码)
  • 原文地址:https://blog.csdn.net/m0_50370837/article/details/125471692