Shell变量

Shell变量

  • 本地变量
    • 变量定义
    • 取出变量值
  • 特殊参数变量
    • ⾯试题分享
  • 特殊状态变量
    • 脚本控制返回值
    • 获取上⼀次后台进程的PID
      • 再来分享一道面试题:
    • 获取当前脚本的PID
    • 获取上次命令的最后一个参数


本地变量

定义Shell变量,变量名不需要加美元符 $
本地变量只在⽤户当前shell⽣存期中有效,如
在这里插入图片描述
当我们bash,开启子shell时,变量就丢失了
在这里插入图片描述

变量定义

变量名要求:字⺟、数字、下划线组成、可以是 字⺟ 或是 下划线 开头,如

  • chaoge
  • chao_ge123
  • _chao_ge123

变量名严格区分⼤⼩写

  • Chao_ge
  • chao_ge

取出变量值

  • 单引号,所⻅即所得,强引⽤
  • 双引号,输出引号⾥所有内容,识别特殊符号,弱引⽤
  • ⽆引号,连续的符号可以不加引号,有空格则有歧义,最好使⽤双引号
  • 反引号,引⽤命令执⾏结果,等于 $() ⽤法

特殊参数变量

shell的特殊变量,⽤在如脚本,函数传递参数使⽤,有如下特殊的,位置参数变量$0获取shell脚本⽂件名,以及脚本路径$n 获取shell脚本的第n个参数,n在1~9之间,如$1 ,$2, $9 ,⼤于9则需要写,${10},参数空格隔开$# 获取执⾏的shell脚本后⾯的参数总个数$* 获取shell脚本所有参数,不加引号等同于$@作⽤,加上引号"$*"作⽤是 接收所有参数为单个字符串,"$1 $2.."$@ 不加引号,效果同上,加引号,是接收所有参数为独⽴字符串,如"$1" "$2" "$3" ...,空格保留

特殊变量实践脚本
创建一个special_var.sh
在里面添加如下代码

#! /bin/bashecho '---特殊变量 $0 $1 $2 ..的实践'echo '结果:'  $0 $1 $2echo '#####################'echo '---特殊变量$# 获取参数总个数'echo '结果:'  $#echo '#####################'echo '---特殊变量$* 实践'echo '结果:'  $*echo '#####################'echo '---特殊变量$@ 实践'echo '结果:' $@

接下来执行

bash special_var.sh w j j 1 2 3

执行结果为
在这里插入图片描述

如果上面的你看懂了,我们再来试一下这道面试题。

⾯试题分享

在这里插入图片描述
我们来实际演示一下:

vim different.sh

在里面加入
\反斜杠,是转义符号的概念

#!/bin/bash
echo "print each param from \"\$*\""
for var in "$*"
doecho "$var"
done
echo "print each param from \"\$@\""
for var in "$@"
doecho "$var"
done

在这里插入图片描述
可以清晰的看到:
$*是把传进来的所以参数当一个整体
$@是把传进来的每个参数当个整体,每个参数都是独立的

特殊状态变量

$? 上⼀次命令执⾏状态返回值,0正确,⾮0失败

$$ 当前shell脚本的进程号

$! 上⼀次后台进程的PID
$_ 再次之前执⾏的命令,最后⼀个参数

查找⽅式 man bash
搜索Special Parameters

脚本控制返回值

脚本控制返回值的玩法,在学习shell函数编程之后,才能彻底理解。
这个脚本执行完毕之后,会返回一个数字id,称之为返回值

vim t1.sh

在里面加入

powershell
#!/bin/bash
# $#
# $#获取参数个数   -ne 不等于的情况 && 并且[ $# -ne 2 ] && {echo "must be two args"exit 119 #终⽌程序运⾏,且返回119状态码,提供给当前shell的$?变量,若是在函数⾥ 可以return 119⽤法}
echo ok

向脚本里面加入三个参数
bash t1.sh w j j
则返回119

向脚本里面加入两个参数
bash t1.sh w j
则返回0
在这里插入图片描述

获取上⼀次后台进程的PID

$!获取
nohup ping baidu.com & 1> /dev/null
ps -ef|grep ping
echo $!

在这里插入图片描述

再来分享一道面试题:

怎么让程序后台执行?

nohup xxx & 1> /dev/null

获取当前脚本的PID

$$

修改t1.sh,在末尾加上:
echo “当前脚本执⾏的进程号:$$”

bash t1.sh w j

在这里插入图片描述

获取上次命令的最后一个参数

$_

在这里插入图片描述

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

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

相关文章

JS异常处理——throw和try、catch以及debugger

让我为大家介绍一下异常处理吧! 异常处理是指预估代码执行过程中可能发生的错误,然后最大程度的避免错误的发生导致整个程序无法继续运行 throw 抛异常 第一种写法 function fun(x, y) {// undefined是false 但取反就是trueif (!x || !y) {// 第一种写…

【ChatGPT瀑布到水母】AI 在驱动软件研发的革新与实践

这里写目录标题 前言内容简介作者简介专家推荐读者对象目录直播预告 前言 计算机技术的发展和互联网的普及,使信息处理和传输变得更加高效,极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术,也在不…

VM虚拟机逆向 --- [NCTF 2018]wcyvm 复现

文章目录 前言题目分析 前言 第四题了,搞定,算是独立完成比较多的一题,虽然在还原汇编的时候还是很多问题。 题目分析 代码很简单,就是指令很多。 opcode在unk_6021C0处,解密的数据在dword_6020A0处 opcode [0x08, …

众佰诚:新手如何在抖音电商中脱颖而出

在这个信息爆炸的时代,短视频平台抖音已经成为了人们获取信息、娱乐和购物的重要渠道。越来越多的商家开始在抖音上开设店铺,希望通过这个平台实现销售增长。然而,对于新手来说,如何在众多的竞争对手中脱颖而出,成为了…

人工智能与卫星:颠覆性技术融合开启太空新时代

人工智能与卫星:颠覆性技术融合开启太空新时代 摘要:本文将探讨人工智能与卫星技术的融合,并介绍其应用、发展和挑战。通过深入了解这一领域的前沿动态,我们将展望一个由智能卫星驱动的未来太空时代。 一、引言 近年来&#xf…

时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测

时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测 目录 时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 …

汽车标定技术(一):XCP概述

目录 1.汽车标定概述 2.XCP协议由来及版本介绍 3.XCP技术通览 3.1 XCP上下机通信模型 3.2 XCP指令集 3.2.1 XCP帧结构定义 3.2.2 标准指令集 3.2.3 标定指令集 3.2.4 页切换指令集 3.2.5 数据采集指令集 3.2.6 刷写指令集 3.3 ECU描述文件(A2L)概述 3.3.1 标定上位…

无声的世界,精神科用药并结合临床的一些分析及笔记(十)

目录 回 “ 家 ” 克服恐惧 奥沙西泮 除夕 酒与药 警告 离别 回 “ 家 ” 她的锥切手术进行的很顺利,按计划继续返回安定医院调节心理状态,病友们都盼着我们回“家”。当我俩跨入病区,大家都涌过来帮我们大包小包的拎着行李&#xff0…

【实战Flask API项目指南】之七 用JWT进行用户认证与授权

实战Flask API项目指南之 用JWT进行用户认证与授权 本系列文章将带你深入探索实战Flask API项目指南,通过跟随小菜的学习之旅,你将逐步掌握 Flask 在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧! 前言 当小菜踏入Flask后端开发…

[云原生1. ] 使用Docker-compose一键部署Wordpress平台

文章目录 1. Docker-compose概述1.1 简介1.2 docker-compose 的三大概念1.3 docker-compose配置模板文件常用的字段1.4 docker-compose 常用命令及格式 2. YAML 文件的详细介绍及编写注意事项2.1 简介2.2 yaml的特性2.2.1 语法特点2.2.2 数据结构2.2.3 引号的区别2.2.4 内置类型…

剑指JUC原理-9.Java无锁模型

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…

234. 回文链表、Leetcode的Python实现

博客主页:🏆看看是李XX还是李歘歘 🏆 🌺每天分享一些包括但不限于计算机基础、算法等相关的知识点🌺 💗点关注不迷路,总有一些📖知识点📖是你想要的💗 ⛽️今…

Zookeeper安装及配置

Zookeeper官网:Apache ZooKeeper 一般作为服务注册中心 无论在Windows下还是Linux下,Zookeeper的安装步骤是一样的,用的包也是同一个包 Window下安装及配置Zookeeper 下载后解压 linux安装 window及Linux安装及配置zookeeper_访问windos上的zookeeper-CSDN博客

【小白福音】手把手教学搭建Vue+SpringBoot开发环境完整教程

前言:在很多新手小白在准备开发一个属于自己的前后端分离项目的时候需要准备一些例如Java环境配置、Node.Js配置、Maven配置以及软件安装等等,于本次博主亲自录制了一套完整的安装配置教程,提供到最后给大家进行下载。 注:本教程仅适用于小白,每一节课都是博主原创录制的,…

Unity3D与iOS的交互 简单版开箱即用

本文适合的情况如下: Unity客户端人员 与 IOS端研发人员合作的情况 目录 From U3D to iOS 实现原理 1.unity工程目录创建2个文件 NativeCallProxy.m、NativeCallProxy.h 并且放到Unity工程目录Plugins/iOS/unity_ios_plus目录下 2.创建C#调用脚本 定义对应.mm脚…

苹果相机怎么磨皮 苹果手机怎么磨皮

相信使用苹果相机的小伙伴都有这样的疑惑,苹果相机怎么磨皮?其实可以通过相机的参数进行设置从而达到磨皮的效果,如果觉得相机自带的设置磨皮效果不够好,可以下载磨皮软件来对照片磨皮。今天的文章就来给大家介绍苹果相机怎么磨皮…

GPT与人类共生:解析AI助手的兴起

随着GPT模型的崭新应用,如百度的​1​和CSDN的​2​,以及AI助手的普及,人们开始讨论AI对就业市场和互联网公司的潜在影响。本文将探讨GPT和AI助手的共生关系,以及我们如何使用它们,以及使用的平台和动机。 GPT和AI助手…

Nginx简介,Nginx搭载负载均衡以及Nginx部署前端项目

目录 一. Nginx简介 Nginx的优点 二. Nginx搭载负载均衡 2.1 Nginx安装 2.1.1 安装依赖 2.1.2 解压nginx安装包 2.1.3 安装nginx 2.1.4 启动nginx服务 2.2 tomcat负载均衡 2.3 Nginx配置 三. Nginx前端部署 一. Nginx简介 NGINX(读作:engi…

虹科荣誉 | 喜讯!虹科成功入选“广州首届百家新锐企业”!!

文章来源:虹科品牌部 阅读原文:虹科荣誉 | 喜讯!虹科成功入选“广州首届百家新锐企业”!! 近日,由中共广州市委统战部、广州市工商业联合会、广州市工业和信息化局、广州市人民政府国有资产监督管理委员会…

一文带你轻松拿下Java中的抽象类

🤷‍♀️🤷‍♀️🤷‍♀️各位看官你们好呀!!! 今天我带大家来深入了解一下Java中的抽象类,相信看完这篇文章,你将会有很大的收获! 个人主页 🌂c/java领域新星…