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 exit
        exit
}
id "$USERNAME" &> /dev/null && {
        echo "$USERNAME" is exist
        ACTION
}||{
        echo $USERNAME is not exist
        read -p "please input password: " PASSWORD
        useradd $USERNAME
        echo $PASSWORD | passwd --stdin $USERNAME
        echo $USERNAME is created
        ACTION
}

}
ACTION

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

echo "[d]elete [A]dd"
read -p "please input action:" ACTION
[ "$ACTION"  != "a" -a "$ACTION" != "d" ]  && {
        echo wrong action
        exit
}

[ "$ACTION" = "d" ] && {
        read -p "please input username:" USERNAME
        id $USERNAME &> /dev/null && {
        userdel -r $USERNAME
        echo $USERNAME is deleted
}||{
        echo $USERNAME is not exist
}
        exit
}

[ "$ACTION" = "a" ] && {
        read -p "please input username:" USERNAME
        id $USERNAME &> /dev/null && {
        echo $USERNAME is exist
}||{
        read -p "please input password: " PASSWORD
        useradd $USERNAME
        echo $PASSWORD | passwd --stdin $USERNAME
        echo $USERNAME is created
}
        exit
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

14. 机器学习 - KNN 贝叶斯

Hi&#xff0c;你好。我是茶桁。 咱们之前几节课的内容&#xff0c;从线性回归开始到最后讲到了数据集的处理。还有最后补充了SOFTMAX。 这些东西&#xff0c;都挺零碎的&#xff0c;但是又有着相互之间的关系&#xff0c;并且也都蛮重要的。并且是在学习机器学习过程当中比较…

【赠书活动】从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

测开 (性能测试)

目录 前言 1、性能测试和功能测试的区别 2、性能好与不好的表现 3、性能测试衡量指标 && 名称解释 指标一&#xff1a;并发用户数 指标二&#xff1a;响应时间 / 平均响应时间 指标三&#xff1a;事务 指标四&#xff1a;点击率&#xff08;Hit Per Second&…

【C++笔记】C++继承

【C笔记】C继承 一、继承的概念二、继承的语法和权限三、父类和子类成员之间的关系3.1、子类赋值给父类(切片)3.2、同名成员 四、子类中的默认成员函数4.1、构造函数4.2、拷贝构造4.3、析构函数 五、C继承大坑之“菱形继承”5.1、什么是“菱形继承”5.2、解决方法 一、继承的概…

数据交换技术

一、数据交换 数据交换是实现在大规模网络核心上进行数据传输的技术基础。 常见的数据交换技术包括 电路交换报文交换分组交换 基于不同交换技术构建的网络分别称之为电路交换网络、报文交换网络和分组交换网络。 发展演变图&#xff1a; a) 电路交换 电路交换是最早出现…

JEnv使用初体验

Java多版本控制器初体验 1、前言 由于公司项目使用jdk8版本&#xff0c;而日常学习会使用其他版本例如jdk17等&#xff0c;往常都是修改环境配置目录实现。 2、下载资料 链接&#xff1a;https://pan.baidu.com/s/1UqzHv8K8WBu-75Ysyc_h3A 提取码&#xff1a;ra6a 3、安装 …

TYWZOJ 种树苗 待定题解

文章目录 题目描述输入格式输出格式样例样例输入样例输出 数据范围与提示思路与部分实现完整代码 题目描述 在游戏 Minecraft 中&#xff0c;玩家可以通过种树来使木材再生。玩家需要将树苗种在泥土上&#xff0c;然后等待它长成大树&#xff0c;期间可以利用骨粉来催熟树苗。…

Linux——文件权限属性和权限管理

文件权限属性和权限管理 本章思维导图&#xff1a; 注&#xff1a;本章思维导图对应的Xmid文件和.png文件都以传到“资源” 文章目录 文件权限属性和权限管理1. sudo提权和sudoers文件1.1 sudo提权和成为root的区别 2. 权限2.1 Linux群体2.1.1 为什么要有所属组2.1.2 修改文件…

汇编运算符和表达式

运算符&#xff1a; 汇编语言由表达式和运算符组成&#xff0c;运算符分为数值运算符和属性运算符。属性运算符面向变量或标号。 数值运算符&#xff1a; 算术运算符&#xff1a; 运算符类型 ✓ ( 正号 ) 、 -( 负号 ) ✓ ( 加 ) 、 -( 减 ) 、 *( 乘 ) 、 /( 除 ) 、 MO…

centos中安装Mysql8.0

其实和mysql5.7的安装差不多 1.root用户 2.更新密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 3.安装mysql yum库 rpm -Uvh https://dev.mysql.com/ get/mysql80-community-release-el7-2.noarch.rpm 4.通过上两步&#xff0c;我们就可以使用yum去安装…

2023-10-21 美团2024秋招后端开发岗笔试题

1 考察dfs和拓扑排序 1.1 题目描述&#xff08;如果拓扑排序不清楚可以去做一下lc 207. 课程表&#xff09; 1.2 答案 import java.util.*;public class Meituan {static int m,n;public static void main(String[] args) {Scanner in new Scanner(System.in);m in.nextInt…

Controller接收Postman的raw参数时,属性值全部为空

Controller接收Postman的raw参数时&#xff0c;属性值全部为空 情景再现 在进行业务代码的编写过程中&#xff0c;使用Postman等工具调用Controller接口时&#xff0c;发现属性值全部为空后端代码如下&#xff1a; Requset对象为&#xff1a; public class QuerySkuRequest …

Openssl数据安全传输平台017:客户端在Linux上的编译与调试

客户端代码在widows上编译&#xff0c;除了protobuf找不到目录&#xff0c;其他的基本没有什么问题。 然后打开虚拟机&#xff0c;项目文件已经在/home/projects目录下了 进入项目文件&#xff0c;对代码进行编译 第一次 // 找不到protobuf g *.cpp *.cc -ljson -lpthread -…

雨云OSS服务介绍和使用教程,以及Chevereto图床使用雨云OSS的教程

雨云OSS&#xff08;对象存储&#xff09;服务介绍和使用教程&#xff0c;以及Chevereto图床程序使用雨云OSS的教程 雨云OSS&#xff08;对象存储&#xff09;是一种基于S3协议的云端数据存储服务&#xff0c;它可以帮助你将数据安全、高效地存储在云端&#xff0c;并且可以随…

队列(Queue)概念+通过单、双链表来模拟队列+环形队列+OJ面试题(用队列实现栈、用栈实现队列、设计环形队列)

文章目录 队列(Queue)一、 概念1.尾进头出 二、模拟队列1.单链表实现队列1.1 设置结点1.2 入队offer1.3出队 poll1.4 empty方法&#xff0c;peek方法&#xff0c;getUsedSize方法 2.双链表实现队列2.1 创建结点2.2 入队列2.3 出队列2.4 peek、size、isEmpty方法 三、环形队列1.…

一键添加命名前缀(文件)

&#xff08;一&#xff09;需求描述 在上班摸鱼的我正准备打开手机刷会儿CSDN论坛&#xff0c;老板发给我一个压缩包并要求我给里面所有的文件的名称添加一个前缀”大项目_”。我本以为只有几个文件需要改&#xff0c;便没放在心上&#xff0c;反倒是心里暗暗吐槽老板“这么简…

c++设计模式二:原型模式

使用场景&#xff1a;当需要构建多个相同的类对象时&#xff0c;而且该类对象结构较为复杂&#xff0c;如果每个都重新组织构建会很麻烦。 其实&#xff0c;就是写一个拷贝构造函数&#xff0c;或者写一个拷贝每个成员变量的clone()方法。 举例说明&#xff1a;比如一个相亲网站…

Megatron-LM GPT 源码分析(四) Virtual Pipeline Parallel分析

引言 本文接着上一篇【Megatron-LM GPT 源码分析&#xff08;三&#xff09; Pipeline Parallel分析】&#xff0c;基于开源代码 GitHub - NVIDIA/Megatron-LM: Ongoing research training transformer models at scale &#xff0c;通过GPT的模型运行示例&#xff0c;从三个维…

51单片机复位电容计算与分析(附带Proteus电路图)

因为iC x (dU/dt).在上电瞬间&#xff0c;U从0变化到U,所以这一瞬间就是通的&#xff0c;然后这就是一个直流回路&#xff0c;因为电容C直流中是断路的&#xff0c;所以就不通了。 然后来分析一下这个电容的电压到底是能不能达到单片机需要的复位电压。 这是一个线性电容&…

Django 全局配置 settings 详解

文章目录 1 概述1.1 Django 目录结构 2 常用配置&#xff1a;settings.py2.1 注册 APP&#xff1a;INSTALLED_APPS2.2 模板路径&#xff1a;TEMPLATES2.3 静态文件&#xff1a;STATICFILES_DIRS2.4 数据库&#xff1a;DATABASES2.5 允许访问的主机&#xff1a;ALLOWED_HOSTS 1 …