当前位置: 首页 > news >正文

Shell——变量和引用

1.总结变量的类型及含义?

2.实现课堂案例计算长方形面积?(6种方式)

3.定义变量url=https://blog.csdn.net/weixin_45029822/article/details/103568815

(通过多种方法实现)

        1)截取网站访问的协议

        2)截取网站访问账号信息


1.总结变量的类型及含义?

        1)、自定义变量:

               (1)、定义变量:   

                        变量名=变量值

               注:变量名必须以字母或下划线开头,区分大小写

                (2)、引用变量:

                        $变量名或$(变量名)

                (3) 、查看变量

                        echo $变量名

                (4)、取消变量

                        unset 变量名

                (5)、作用范围

                        仅在当前shll中有效

num=1
name=lisi

        2)、环境变量

                (1)、bash的初始化文件

                        /etc/profile:存放一些全局变量

                        ~/.bash_profile:每个用户都可以使用该文件输入专用于自己使用的shell信息

                        ~/.bashrc:该文件包含专用于你的bash shell的bash信息

                        /etc/bashrc:为每一个运行bash shell的用户执行此文件

              (2)、bash内置环境变量

                        PATH:命令的搜索路径,以冒号作为分隔符

                        HOME:用户的家目录的路径,是cd命令的默认参数

                        COLUMNS:命令行编辑模式下可使用命令的长度

                        HISTFILE:命令历史的文件路径

                        HISTFILESIZE:命令历史中包含的最大行数

                        LOGNAME:当前用户的名字

                        $HELL:当前使用的shell

                        PWD:当前的工作目录

                (3)、范围

                        在所有shell中生效,但是重启ssh连接将会重置(即重新按照定义的变量文件加载

export num=1
export name=zhangsan

        3)、位置变量

                在shell脚本中应有变量,接受实参,这类变量的名称很特别,分别为1,2,3...这类变量称为位置变量,位置参数1存放在位置变量1中,位置参数2存放在位置变量2中,...来访问

$1 $2 $3 $4 $5 $6 $7 $8 $9 $(10)

        4)、预定义变量

$0      脚本名      echo "显示脚本文件名" $0      ||    echo "显示脚本文件名"  basename $0dirname$*    所有的参数$@    所有的参数$#    参数的个数$$    当前进程的PID$!    上一个后台进程的PID$?    上一个命令的返回值 0表示成功

        5)、只读变量

                将变量配置成为 readonly 类型,该变量不可被更改内容,也不能 unset   -

                (1)、定义方法:

                        方法一:  readonly [-fap] [变量定义]  -f 定义只读函数 -a 定义只读数组变量 -p 显示系统中全部的变量列表

                        方法二:  declare – r 变量定义

                (2)、取消变量:

                                unset

                                选项: -f 取消的是函数

                                          -v 取消的是变

                                          如果没有指选项,首先尝试取消变量,如果失败尝试取消函数。

2.实现课堂案例计算长方形面积?(6种方式)

        1)、使用变量

[root@localhost ~]# vim 2.sh#!/bin/bash
##############################################################
# File Name: 2.sh
# Version: V1.0
# Author: xx
# Email: xx@163.com
# Organization: http://www.xx.com/xx/
# Created Time : 2023-05-21 10:38:18
# Description:
##############################################################l=10
w=5
area=$(($l * $w))
echo "长为$l,宽为$w的长方形面积为$area"[root@localhost ~]# bash 2.sh
长为10,宽为5的长方形面积为50

        2)、直接计算

[root@localhost ~]# vim 3.sh#!/bin/bash
##############################################################
# File Name: 3.sh
# Version: V1.0
# Author: xx
# Email: xx@163.com
# Organization: http://www.xx.com/xx/
# Created Time : 2023-05-21 10:40:59
# Description:
##############################################################
echo "长为 10,宽为 5的长方形面积为 $((10 * 5)) "[root@localhost ~]# bash 3.sh
长为 10,宽为 5的长方形面积为 50  

        3)、用bc命令

[root@localhost ~]# vim 4.sh#!/bin/bash
##############################################################
# File Name: 4.sh
# Version: V1.0
# Author: xx
# Email: xx@163.com
# Organization: http://www.xx.com/xx/
# Created Time : 2023-05-21 10:42:53
# Description:
##############################################################
echo "scale=2;10 * 5 " | bc[root@localhost ~]# bash 4.sh
50
[root@localhost ~]# 

        4)、用awk命令

[root@localhost ~]# vim 5.sh#!/bin/bash
##############################################################
# File Name: 5.sh
# Version: V1.0
# Author: xx
# Email: xx@163.com
# Organization: http://www.xx.com/xx/
# Created Time : 2023-05-21 10:45:20
# Description:
##############################################################
echo "10 5" | awk '{print $i * $2}'[root@localhost ~]# bash 5.sh
50
[root@localhost ~]# 

        5)、用expr命令

[root@localhost ~]# vim 6.sh#!/bin/bash
##############################################################
# File Name: 6.sh
# Version: V1.0
# Author: xx
# Email: xx@163.com
# Organization: http://www.xx.com/xx/
# Created Time : 2023-05-21 10:47:26
# Description:
##############################################################
expr 10 \* 5[root@localhost ~]# bash 6.sh
50

        6)、用let命令

[root@localhost ~]# vim 7.sh#!/bin/bash
##############################################################
# File Name: 7.sh
# Version: V1.0
# Author: xx
# Email: xx@163.com
# Organization: http://www.xx.com/xx/
# Created Time : 2023-05-21 10:48:19
# Description:
##############################################################
let area=10*5
echo "长为 10,宽为 5的长方形面积为 $area"[root@localhost ~]# bash 7.sh
长为 10,宽为 5的长方形面积为 50

3.定义变量url=https://blog.csdn.net/weixin_45029822/article/details/103568815

(通过多种方法实现)

        1)截取网站访问的协议

[root@localhost ~]# vim url.sh#!/bin/bash
##############################################################
# File Name: url.sh
# Version: V1.0
# Author: xx
# Email: xx@163.com
# Organization: http://www.xx.com/xx/
# Created Time : 2023-05-21 10:53:09
# Description:
##############################################################
url=https://blog.csdn.net/weixin_45029822/article/details/103568815
protocol=$(echo $url | cut -d ":" -f1)
echo $protocol[root@localhost ~]# bash url.sh
https

        2)截取网站访问账号信息

[root@localhost ~]# vim url.sh#!/bin/bash
##############################################################
# File Name: url.sh
# Version: V1.0
# Author: xx
# Email: xx@163.com
# Organization: http://www.xx.com/xx/
# Created Time : 2023-05-21 10:53:09
# Description:
##############################################################
url=https://blog.csdn.net/weixin_45029822/article/details/103568815
protocol=$(echo $url | cut -d ":" -f1)
echo $protocol
username=$(echo $url | awk -F'[/]' '{print $(NF-3)}')
echo $username[root@localhost ~]# bash url.sh
https
weixin_45029822

http://www.lryc.cn/news/70279.html

相关文章:

  • 实际开发中一些实用的JS数据处理方法
  • 10:00进去,10:05就出来了,这问的也太变态了···
  • GPT时代,最令人担心的其实是“塔斯马尼亚效应”
  • 基于容器技术和服务发现的全新大数据平台弹性伸缩方法
  • php8 match
  • ADS-B接收机Radarcape
  • 软件测评师2012年下半年考试真题<更新中。。。>
  • ChatGPT 使用 拓展资料:开始构建你的优质Prompt
  • Hystrix原理
  • 内网外网分离模式下,通过网关转发,来部署前后端分离的系统
  • 基于 Amazon API Gatewy 的跨账号跨网络的私有 API 集成
  • SSH远程连接时报错kex_exchange_identification: Connection closed by remote host
  • 一、CNNs网络架构-基础网络架构
  • [开发|C++] C++的基本运算符说明笔记
  • 抖音定位功能的作用
  • 阿里 P9 推荐的 Spring 领域巅峰之作,直接颠覆了我对 Spring 的认知
  • R语言结构方程模型(SEM)在生态学领域中的实践应用
  • Java设计模式-模板方法模式
  • Start JDKFlightRecorder--人工翻译
  • Python3安装pyhanlp最佳解决方法
  • 漏洞管理基础知识
  • WBS项目分解的7大基本原则
  • PoseiSwap IDO在Bounce上启动在即,如何参与?
  • Linux基本指令介绍
  • C++服务器框架开发1——项目介绍/分布式/#ifndef与#pragma once
  • Tensorflow2基础代码实战系列之双层RNN文本分类任务
  • Python爬虫-快手photoId
  • 软件测试人员如何为项目的质量保障兜底?看完你就明白了...
  • 《幸福关系的7段旅程》
  • 使用Python中PDB模块中的命令来调试Python代码的教程