• 第一个 Shell 脚本


    一、第一个 Shell 脚本:hello.sh

    1.需求:创建一个 Shell 脚本,输出 hello,word

    1. [root@hadoop ~]# mkdir scripts
    2. [root@hadoop ~]# cd scripts/
    3. [root@hadoop scripts]# touch hello.sh
    4. [root@hadoop scripts]# vim hello.sh
    5. #!bin/bash
    6. echo "hello,world"

    2.脚本的常用执行方式

    第一种:采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)

    sh+脚本的相对路径

    1. [root@hadoop ~]# sh ./scripts/hello.sh
    2. hello,world

    sh+脚本的绝对路径

    1. [root@hadoop ~]# sh /root/scripts/hello.sh
    2. hello,world

    bash+脚本的相对路径

    1. [root@hadoop ~]# bash ./scripts/hello.sh
    2. hello,world

    bash+脚本的绝对路径

    1. [root@hadoop ~]# bash /root/scripts/hello.sh
    2. hello,world

    第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)

    ①首先要赋予 hello.sh 脚本的+x 权限

    [root@hadoop ~]# chmod +x scripts/hello.sh
    

    ②执行脚本

    相对路径

    [root@hadoop ~]# ./scripts/hello.sh
    

    绝对路径

    [root@hadoop ~]# /root/scripts/hello.sh
    

    注意:第一种执行方法,本质是 bash 解析器帮你执行脚本,所以脚本本身不需要执行 权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。

    【了解】第三种:在脚本的路径前加上“.”或者 sourc

    ①有以下脚本

    1. [root@hadoop scripts]# vim test.sh
    2. #!/bin/bash
    3. A=5
    4. echo $A

    ②分别使用 sh,bash,./ 和 . 的方式来执行,结果如下:

    1. [root@hadoop scripts]# bash test.sh
    2. 5
    3. [root@hadoop scripts]# sh test.sh
    4. 5
    5. [root@hadoop scripts]# ./test.sh
    6. 5
    7. [root@hadoop scripts]# . test.sh
    8. 5

    source的命令是shell内嵌的 

    1. [root@hadoop scripts]# type source
    2. source is a shell builtin

    原因:

    两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中

    第三种,也就是使用在脚本路径前加“.”或者 source 的方式,可以使脚本内容在当前 shell 里执行,而无需打开子 shell!这也是为什么我们每次要修改完/etc/profile 文件以后,需 要 source 一下的原因

    开子 shell 与不开子 shell 的区别就在于,环境变量的继承关系,如在子 shell 中设置的 当前变量,父 shell 是不可见的

    1. [root@hadoop scripts]# ps -f
    2. UID PID PPID C STIME TTY TIME CMD
    3. root 20191 20187 0 16:53 pts/0 00:00:00 -bash
    4. root 20345 20191 0 17:30 pts/0 00:00:00 ps -f
    5. [root@hadoop scripts]# bash
    6. [root@hadoop scripts]# ps -f
    7. UID PID PPID C STIME TTY TIME CMD
    8. root 20191 20187 0 16:53 pts/0 00:00:00 -bash
    9. root 20346 20191 0 17:30 pts/0 00:00:00 bash
    10. root 20355 20346 0 17:30 pts/0 00:00:00 ps -f
    11. [root@hadoop scripts]# exit
    12. exit
    13. [root@hadoop scripts]# ps -f
    14. UID PID PPID C STIME TTY TIME CMD
    15. root 20191 20187 0 16:53 pts/0 00:00:00 -bash
    16. root 20356 20191 0 17:30 pts/0 00:00:00 ps -f

    前两种方式打开了bash,第三种直接在-bash进行

  • 相关阅读:
    网络安全(黑客技术)—小白自学
    RocketMQ 安装和启动
    2022 年超详细过程步骤讲解 CentOS 7 安装jdk1.8
    Ubuntu20.04 升级openssh9.4(源码升级)
    游戏道具平台|基于Springboot+Vue实现游戏道具平台系统
    使用idea运行VUE项目
    嵌入式分享合集114
    jsp通用分页(下)
    推荐一款管理系统专用低代码工具,一天开发一个系统不是梦
    python进程池和线程池
  • 原文地址:https://blog.csdn.net/m0_55834564/article/details/126414055