首页
学习
活动
专区
圈层
工具
发布

SHELL(bash)脚本编程一:变量

本篇开始,介绍shell脚本编程,更确切的说是bash脚本编程(版本:4.2.46(1)-release)。我们从变量开始。...类型 环境变量 概念 当我们通过ssh等工具登录系统时,便获得一个shell(一个bash进程),bash在启动过程中会加载一系列的配置文件,这些配置文件的作用就是为用户准备好bash环境,大部分环境变量都是在这些文件中被设置的...登录shell的进程名为-bash,非登录shell(比如在桌面环境下通过打开一个"终端"窗口程序而获得的shell)的进程名为bash。...非交互式shell启动时(如脚本中),会继承派生出此shell的父shell的环境变量并执行环境变量BASH_ENV的值中所指代的文件。...影响每个启动时加载相应配置文件的bash进程及其子进程。 2、当前shell中自定义并通过内置命令export导出的环境变量。影响当前bash进程及其子进程。

3.3K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Bash 脚本中,特殊变量$0到底是什么?

    在 Bash 脚本中,$0 是一个特殊变量,它代表当前脚本的路径和名称。这个变量用于表示脚本自身,它是 Bash 环境中的一个重要组成部分。$0 变量是一个只读变量,无法更改。...图片在 Bash 脚本中,$0 变量通常用于以下情况:1. 显示脚本的名称和路径可以使用 $0 变量来显示脚本的名称和路径。通常,这种情况下,我们使用 echo 命令来输出脚本的名称和路径。...在 Bash 脚本中,$0 变量是只读变量,不能被修改。在使用 $0 变量时,需要小心空格和引号。如果在使用 $0 变量时将其括在引号中,则需要使用双引号而不是单引号。...结论在 Bash 脚本中,$0 变量是一个特殊变量,用于表示当前脚本的路径和名称。它可以用于显示脚本名称和路径,比较脚本名称和路径,以及脚本自身的调试和测试。...当编写 Bash 脚本时,了解 $0 变量的用途和用法将使你能够更好地使用 Bash 脚本语言。

    3.2K00

    使用Jenkins通过Publish Over SSH插件远程控制主机执行脚本

    19.03.13 192.168.1.20:K8s_Node2/Gitlab、CentOS 7.5.1804、Docker 19.03.13 准备工作:  在被远程主机192.168.1.20上准备好test.sh脚本文件.../bin/bash > echo I am 192.168.1.20 > EOF [root@k8s-node2 ~]# cat shell/test.sh #!.../bin/bash echo I am 192.168.1.20 [root@k8s-node2 ~]# chmod +x shell/test.sh //添加脚本执行权限 插件安装  在主机...192.168.1.18的Jenkins中【系统管理】—【管理插件】中,过滤出“Publish over SSH插件”,然后直接安装插件,如图安装即可,或者去官网下载插件的.hpi文件通过高级选项中手动安装也可以...Name:SSH节点配置的名称,在构建中使用Publish over SSH插件时,此名称将出现在“SSH Server”中“Name”的下拉列表中,如下图:  Hostname:通过SSH连接到的机器的主机名或

    2.6K20

    通过transmittable-thread-local源码理解线程池线程本地变量传递的原理

    父子线程的变量传递 在Java中没有明确给出一个API可以基于子线程实例获取其父线程实例,有一个相对可行的方案就是在创建子线程Thread实例的时候获取当前线程的实例,用到的API是Thread#currentThread...变量的拷贝,这是一个变量传递的过程。...ThreadLocal、InheritableThreadLocal的最大局限性就是:无法为预先创建好(未投入使用)的线程实例传递变量(准确来说是首次传递某些场景是可行的,而后面由于线程池中的线程是复用的...首次变量传递成功是因为线程池中的所有子线程都是派生自main线程。...TransmittableThreadLocal继承自InheritableThreadLocal,本质就是ThreadLocal,那它到底怎么样保证变量可以在线程池中的线程传递?

    1.9K20

    Shell【脚本 04】传递参数的4种方式(位置参数、特殊变量、环境变量和命名参数)实例说明

    Shell脚本是一种命令语言,可以用于自动化执行各种任务。在脚本中,我们可以通过参数来传递信息,这样脚本就可以根据这些信息来执行特定的操作。...本文将介绍如何在shell脚本中传递参数,包括位置参数、特殊变量、环境变量和命名参数。1.Shell基础知识1.1 解释器#!.../bin/bash 称为shebang或sha-bang、hashbang。是一个特殊的字符序列,由井号“#”和叹号“!”组成,放在脚本文件的第一行开头。...$#:表示传递给脚本的参数个数。$@:表示所有传递给脚本的参数的列表。$?:表示上一个命令的返回值。这也解释了为什么位置参数是从1开始的了,$0经常用在日志里,说明当前执行的脚本名称。例如:#!...这个变量通常会传递给一个eval命令进行处理,例如:eval set -- "$options"# 测试脚本#!

    63210

    【Linux系统编程】(十五)揭秘 Linux 环境变量:从底层原理到实战操作,一篇吃透命令行参数与全局变量!

    这两个数组都通过进程的用户栈传递给程序,结构上相互独立,但都遵循 “以NULL结尾的字符指针数组” 规则。...# 添加执行权限 chmod +x args_demo.sh # 运行脚本,传递3个参数 ....bash 脚本获取环境变量:3 种实战方法 bash 脚本作为 Linux 中最常用的程序载体,提供了多种方式获取环境变量。...下面结合实战脚本,讲解每种方法的用法: 5.1 直接使用$变量名:最简单的方法 在 bash 脚本中,直接通过$变量名即可获取环境变量的值,与终端中用法一致: # 创建脚本env_demo1...六、环境变量的全局属性:子进程继承机制实战 环境变量的 “全局继承” 是其核心特性,下面通过实战案例验证这一机制,让你直观理解父进程与子进程的环境变量传递。

    16610

    登录Shell与非登录Shell之间的区别

    登录shell通常会读取一个文件,这个文件会执行一些操作,比如设置环境变量:对于传统的Bourne shell是/etc/profile和~/.profile,对于bash还额外有~/.bash_profile...当你通过文本控制台登录,或者通过SSH,或者使用su -命令时,你会得到一个交互式登录shell。...另一种获得非交互式登录shell的方法是通过标准输入远程登录并传递一个命令,而这个命令并不是来自终端的,例如,可以通过本地存储的脚本向服务器发送命令来实现:ssh example.com < my-script-which-is-stored-locally...以下是它们之间的一些关键区别: 1.启动方式: •登录Shell:当你通过文本控制台、SSH、或者使用su -命令登录系统时,系统会启动一个登录Shell。...3.参数传递: •登录Shell:登录Shell在启动时会接收一个特殊的参数-(dash),这告诉Shell它是一个登录Shell。例如,如果使用的是Bash,参数0会是-bash。

    69510

    Linux系统中Shell脚本加密字段的处理方法和原理分析

    什么是Shell脚本中的敏感字段Shell脚本中的敏感字段通常指的是那些包含敏感信息的变量,如数据库密码、第三方服务的API密钥、SSH密钥等。...这些信息如果以明文形式存储在脚本中,一旦脚本被未授权访问,就可能导致安全风险。为什么需要加密加密是保护敏感信息的一种有效手段。...使用环境变量最简单的方法是不直接在脚本中存储敏感信息,而是通过环境变量来传递。这样,敏感信息就不会直接出现在脚本文件中。#!.../bin/bash# 从环境变量中读取数据库密码DB_PASSWORD=$DB_PASSWORD# 使用数据库密码连接数据库mysql -uusername -p$DB_PASSWORD -e "SELECT...结论在Linux系统中,保护Shell脚本中的敏感字段是非常重要的。通过使用环境变量、配置文件、密钥管理服务、GnuPG加密或Linux内置加密工具,可以有效地保护这些敏感信息。

    58200

    Linux环境变量加载顺序分析

    当你发现配置了环境变量,但实际使用时环境变量未生效时,希望这篇文章能对你有所帮助。 我们登录linux有很多种,bash来交互式执行,或者直接非交互式执行命令。...不输入密码的ssh是公钥打通的,某种意义上说也是输入密码的。 非登陆式的就是在登陆后启动bash等,即不是远程登陆到主机这种。.../executable:非登录+非交互(non-login + non-interactive)) 远程执行脚本,如 ssh user@remote script.sh:非登录+非交互(non-login...+ non-interactive)) 远程执行脚本,同时-t强制分配伪终端,如ssh user@remote -t 'echo $PWD' :非登录+交互(non-login + interactive...注意 bash -l : 加了-l参数后,打开的是登陆式shell。这要注意。 BASH_ENV变量: 一个环境变量,用于指定非交互+非登陆式的环境变量文件。

    2.4K30
    领券