shell脚本变量

目录

1.变量的定义

2.shell脚本中变量的定义方法

3.变量的转译

4.Linux中命令的别名设定

5.用户环境变量的更改

6.利用命令的执行结果设定变量

7.脚本函数


1.变量的定义

1)定义本身

变量就是内存一片区域的地址

2)变量存在的意义

命令无法操作一直变化的目标:用一串固定的字符来表示不固定的目标可以解决此问题

2.shell脚本中变量的定义方法

环境级别

export a=1

在环境关闭后变量失效

 用户级别(只针对当前用户生效)

vim ~/.bash_profile        //shell环境的配置文件

export a=1

source .bash_profile         //使配置文件生效

系统级别

vim /etc/profile                //系统级别的传参

export a=2

source /etc/profile

vim /etc/profile.d/westos.sh                //自定义自配置文件

export b=3

 变量名称

变量名称可包含的字符:字符、_、数字,不能用数字开头

建议变量名称短全用大写字符,变量名称长用_区分子类,如WESTOS、Westos_Linux、westoS_Linux

3.变量的转译

转译

#                       // 转译单个字符
""                           //弱引用,批量转译个数字符 不能转译“\”,“”,“$”,“!”
''                                 //强引用

声明

echo $ab
echo ${a}b

变量的数组

a=(1 2 3 4 5)
a$[a[@]:起始元素id:元素个数]      
echo ${a[0]}                //数组中第一个元素
echo ${a[*]}            //数组中所有元素
echo ${a[@]}                //数组中所有元素
echo ${a[@]:0:3}          //数组中1到3个的元素
echo ${#a[@]}         //数组中元素的个数
unset a[n]                //删除数组中的第n-1个元素
unset a                     //删除a这个数组

4.Linux中命令的别名设定

alias xie='vim' 	//临时设定vim ~/.bashrc            //只针对于用户生效
alias xie='vim' 	    vim /etc/bashrc 	    //针对系统所有用户生效
alias xie='vim'unalias xie 		//删除当前环境中的alias

5.用户环境变量的更改

环境变量:
用户在操作系统时使用到的命令搜索路径

设定方式

vim  ~/.bash_profile
export PATH=$PATH:/mnt        //用户级别vim  /etc/bash_profile
export PATH=$PATH:/mnt            //系统级别

6.利用命令的执行结果设定变量

直接利用命令执行结果

$(),``      //优先执行
TEST=hostname TEST=$(hostname)

脚本中的传参

非交互模式:
$0 is /mnt/test.sh 				//脚本本身
$1 is westos 					//脚本后所输入的第一串字符
$2 is linux
$3 is redhat
$* is westos linux redhat 		//脚本后所输入的所有字符"westos linux redhat"
$@ is westos linux redhat 		//脚本后所输入的所有字符'westos' 'linux' 'redhat'
$# is 3 						//脚本后所输入的字符串个数交互模式传参:
read WESTOS 					//对westos赋值
read -p "please input word:" 	//输出提示语
-s 								//隐藏输入内容

7.脚本函数

定义:
程序的别名

设定方式:
WORD()
{
action1
action2
}

WORD 在脚本中就代表action1 action2这两个动作

练习脚本

sh create_user.sh
Please input username : westos
westos exist < output >> westos is exist > Please input username :
westos not existplease input password : 无回显密码
此用户会自动建立并且密码为提示后设定的密码
并显示 : westos is created
并再次提示 Please input username
Please input username exit
此脚本退出
ACTION()
{
read -p "please input username: " USERNAME
[ "$USERNAME" = "exit" ] && {echo exitexit
}
id "$USERNAME" &> /dev/null && {echo "$USERNAME" is existACTION
}||{echo $USERNAME is not existread -p "please input password: " PASSWORDuseradd $USERNAMEecho $PASSWORD | passwd --stdin $USERNAMEecho $USERNAME is createdACTION
}}
ACTION

实现的功能是添加和删除用户。用户可以选择添加或删除,如果选择删除,会要求输入用户名,然后进行删除;如果选择添加,则先检查用户是否已经存在,如果存在则提示用户已经存在,如果不存在,则要求输入密码,然后创建用户并设置密码。

echo "[d]elete [A]dd"
read -p "please input action:" ACTION
[ "$ACTION"  != "a" -a "$ACTION" != "d" ]  && {echo wrong actionexit
}[ "$ACTION" = "d" ] && {read -p "please input username:" USERNAMEid $USERNAME &> /dev/null && {userdel -r $USERNAMEecho $USERNAME is deleted
}||{echo $USERNAME is not exist
}exit
}[ "$ACTION" = "a" ] && {read -p "please input username:" USERNAMEid $USERNAME &> /dev/null && {echo $USERNAME is exist
}||{read -p "please input password: " PASSWORDuseradd $USERNAMEecho $PASSWORD | passwd --stdin $USERNAMEecho $USERNAME is created
}exit
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/121138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ETL工具】Datax-ETL-SqlServerToHDFS

&#x1f984; 个人主页——&#x1f390;个人主页 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; 感谢点赞和关注 &#xff0c;每天进步一点点&#xff01;加油&#xff01;&…

读高性能MySQL(第4版)笔记21_读后总结与感想兼导读

1. 基本信息 高性能MySQL&#xff1a;经过大规模运维验证的策略&#xff08;第4版&#xff09; High Performance MySQL, Fourth Edition [美] Silvia Botros(西尔维亚博特罗斯)&#xff1b;Jeremy Tinley(杰里米廷利) 电子工业出版社,2022年10月出版 1.1. 读薄率 书籍总字…

HarmonyOS DevEso环境搭建

DevEco Studio 3.1配套支持HarmonyOS 3.1版本及以上的应用及服务开发&#xff0c;提供了代码智能编辑、低代码开发、双向预览等功能&#xff0c;以及轻量构建工具DevEco Hvigor 、本地模拟器&#xff0c;持续提升应用及服务开发效率。 1.下载 官方网站&#xff1a; HUAWEI De…

Python深度学习实战-基于tensorflow原生代码搭建BP神经网络实现分类任务(附源码和实现效果)

实现功能 前面两篇文章分别介绍了两种搭建神经网络模型的方法&#xff0c;一种是基于tensorflow的keras框架&#xff0c;另一种是继承父类自定义class类&#xff0c;本篇文章将编写原生代码搭建BP神经网络。 实现代码 import tensorflow as tf from sklearn.datasets import…

ssh连接远程服务器,并在终端安装anaconda

官网下载安装&#xff1a;anaconda2023.09版本&#xff08;官网地址&#xff1a;https://www.anaconda.com/download#downloads&#xff09; wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh使用阿里云镜像下载安装&#xff0c;官网下载太慢。阿…

2698 求一个整数的惩罚数 (子集和,DFS)

class Solution { public:bool dfs(int target, string s, int index, int sum) {// 只有整个字符串都被分割&#xff0c;求和&#xff0c;和看结果是不是等于targetif(index s.size()) {return sum target;}int num 0; // 在现在的子集中去依次加入余下的元素// 1 2 9 6// …

支付宝证书到期更新完整过程

如果用户收到 支付宝公钥证书 到期通知后&#xff0c;可以根据如下指引更新证书 确认上传成功后就会生成新的证书&#xff0c;把新的证书替换到生产环境就可以了

浏览器事件循环 (event loop)

进程与线程 进程 进程的概念 进程是操作系统中的一个程序或者一个程序的一次执行过程&#xff0c;是一个动态的概念&#xff0c;是程序在执行过程中分配和管理资源的基本单位&#xff0c;是操作系统结构的基础。 简单的来说&#xff0c;就是一个程序运行开辟的一块内存空间&a…

RocketMQ事务消息 超时重发还是原来的消息吗?

以下面的一个demo例子来分析一下&#xff0c;探索RocketMQ事务消息原理。 public static final String PRODUCER_GROUP "tran-test";public static final String DEFAULT_NAMESRVADDR "127.0.0.1:9876";public static final String TOPIC "Test&qu…

【CSS】CSS 属性计算过程

1. 概述 我们所书写的任何一个 HTML 元素&#xff0c;实际上都有完整的一整套 CSS 样式。如果没有修改某样式&#xff0c;大概率可能使用默认值。 例如&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

unity 基于UGUI的无限动态滚动列表

基于UGUI的动态滚动列表&#xff0c;主要支持以下功能&#xff1a; 继承自UGUI的SrollRect&#xff0c;支持ScrollRect的所有功能&#xff1b; 使用对象池来管理列表元素&#xff0c;以实现列表元素的复用&#xff1b; 支持一行多个元素或一列多个元素&#xff1b; 可使用不…

【MyBatis Plus】深入探索 MyBatis Plus 的条件构造器,自定义 SQL语句,Service 接口的实现

文章目录 前言一、条件构造器1.1 什么是条件构造器1.2 QueryWrapper1.3 UpdateWrapper1.4 LambdaWrapper 二、自定义 SQL 语句2.1 自定义 SQL 的基本用法2.2 自定义 SQL 实现多表查询 三、Service 接口3.1 对 Service 接口的认识3.2 实现 Service 接口3.3 实现增删改查功能3.4 …

el-form那些事

vue3element-plus el-form那些事 输入框后拼接文字 输入框后拼接文字 <el-form-item :label"t(location.locationLength)" prop"locationLength"><el-input v-model"form.locationLength" :placeholder"t(location.inputLocation…

Windoes定时任务、设置定时重启系统

步骤一&#xff1a; 打开计算机管理 通过&#xff1a;control(控制面板&#xff09;或者compmgmt.msc(计算机管理&#xff09;打开程序 步骤二&#xff1a;打开——>系统工具 步骤三&#xff1a; 选择——>任务计划程序 步骤四&#xff1a; 可选择创建新文件命名&…

正点原子嵌入式linux驱动开发——Linux PWM驱动

PWM是很常用到功能&#xff0c;可以通过PWM来控制电机速度&#xff0c;也可以使用PWM来控制LCD的背光亮度。本章就来学习一下如何在Linux下进行PWM驱动开发。 PWM驱动解析 不在介绍PWM是什么了&#xff0c;直接进入使用。 给LCD的背光引脚输入一个PWM信号&#xff0c;这样就…

记一次企业微信的(CorpID)和密钥(Secret)泄漏的利用案例

文章目录 一、介绍二、利用过程1、获取AccessToken2、获取企业微信接口IP段3、获取企业微信回调IP段4、通过部门ID,查看返回的ID5、通过部门ID,查看用户列表6、通过便利ID,发现用户信息泄露,可以进行提交报告7、通过添加接口,添加企业账号8、登陆企业账号进行测试三、参考…

【随机过程】布朗运动

这里写目录标题 Brownian motion Brownian motion The brownian motion 1D and brownian motion 2D functions, written with the cumsum command and without for loops, are used to generate a one-dimensional and two-dimensional Brownian motion, respectively. 使用cu…

主动调度是如何发生的

计算机主要处理计算、网络、存储三个方面。计算主要是 CPU 和内存的合作&#xff1b;网络和存储则多是和外部设备的合作&#xff1b;在操作外部设备的时候&#xff0c;往往需要让出 CPU&#xff0c;就像上面两段代码一样&#xff0c;选择调用 schedule() 函数。 上下文切换主要…

Kafka - 3.x 图解Broker总体工作流程

文章目录 Zk中存储的kafka的信息Kafka Broker总体工作流程1. broker启动后向zk中注册2. Controller谁先启动注册&#xff0c;谁说了算3. 由选举出来的Controller监听brokers节点的变化4. Controller决定leader选举5. Controller将节点信息上传到Zk中6. 其他Controller从zk中同步…

Fourier分析导论——第1章——Fourier分析的起源(E.M. Stein R. Shakarchi)

第 1 章 Fourier分析的起源 (The Genesis of Fourier Analysis) Regarding the researches of dAlembert and Euler could one not add that if they knew this expansion, they made but a very imperfect use of it. They were both persuaded that an arbitrary and d…