linux变量最大长度,51CTO博客-专业IT技术博客创作平台-技术成就梦想

变量操作总结:

${Var:-Value}        变量Var 为unset 或 null  则输出Value。 有值则输出变量Var的值。

${Var:=Value}        变量Var 为unset 或 null  则输出Value,并且赋值于变量Var。 同上。

${Var:+Value}        变量Var 为unset 或 null  则输出变量Var。 有值则输出Value.

${Var:?Value}        变量Var 为unset 或 null  则输出错误信息Value。有值则输出变量Var的值。

${Var-Value}        变量Var 为 unset 则输出Value。 有值或为空,则输出变量Var的值。

${Var=Value}        变量Var 为 unset 则输出Value,并且赋值于变量Var。        同上。

${Var+Value}        变量Var 为 unset 则输出变量Var。有值或为空,则输出Value

${Var?Value}        变量Var 为 unset 则输出错误信息Value。 有值或为空, 则输出变量Var。

在这种的操作中,只有三种情况:1. 变量有值, 2. 变量没有值,  3. 没有变量

在上面加:的操作符中, 空不代表值,    在没有:号的操作符中,空也代表为值。

${变量}      一般变量引用。  {} 一般情况可省略。

${#变量}     取变量中字符的个数(长度)。

bash脚本就是由bash提供的,变量当然也是bash提供的了。

所以bash的glob通配符也可以在大部分里使用。

一、 变量值的编辑:

1. 变量字符匹配则不输出。   2. 变量内容字符偏移并截出余下的部分字符。

3. 变量字符的替换。

1.  所匹配到的变量内容将不显示。

操作符:#                 ${变量#匹配字符}$ do="Hello World"

$ echo $do

Hello World

$ echo ${do#He}

llo World                    #He没有显示

$ echo ${do#*l}

lo World                     #从左到右匹配

#号在上面那种变量应用中,把左边变量的值,按右边的字符串从左到右最短区配,

所区配到的字符不输出。 支持通配符,如?。

操作符: ##$ echo ${do##*l}

d                        #变量的值是Hello World, 从左边一直匹配到倒数第二个字符l.

##号,这个则就是最长区配了。   记住是从左到右的区配顺序。

操作符:%           ${变量%匹配字符}$ echo $do

Hello World

$ echo ${do%ld}

Hello Wor

$ echo ${do%o*}

Hello W

%号跟上面#号的形式都一样,只不过是从右到左的匹配。 同样的一个%号是 最短区配

操作符:%%$ echo ${do%%o*}

Hell

%%号,两个%号,最长区配。  通配符都是支持的。 毕竟都是在shell下,经由shell解释输出。

2.  上面的 # % 都是用来定义匹配变量内容的操作。而下面是用来定义固定的字符的操作。

${变量:数字}$ echo $do

Hello World

$ echo ${do:3}

lo World                    #变量内容的前三个字符没有显示。

前面的3个字符没有输出, 专业点叫作 偏移 , 向右偏移了3个字符。

$ echo ${do:3:2}

lo

$ echo ${do:3:5}

lo Wo

在上面偏移的基础上,再显示向后截取的几位字符。 空格可也是字符啊。

3.  替换变量内容。

${变量/匹配字符/替换字符}$ echo ${do/l/L}

HeLlo World

把第一个匹配到的字符,也就是l , 替换成大写L .

这里是只替换了第一个匹配到的字符。如果把变量后面的/变成两个,就变成替换所有了。

${变量//匹配字符/替换字符}$ echo ${do//l/L}

HeLLo WorLd

替换了所有的l,这里也是可以用通配符的, 但是这里没有最长最短匹配之说,只有替换1个还是替换所有的字符。至于效果,亲们可以自己试试。

二、 变量....., 不知道叫什么名了。

在这种的操作中,只有三种情况:1. 变量有值, 2. 变量没有值,  3. 没有变量

注意: 一般情况下,变量为空也是一种值。 除非有特殊的操作。

do=              do变量有值了。

declare  var     生成了var变量,但var变量没有值。

1.  ${变量-值}

里面的是减号。  那个值当然也可以用变量,不过要加上$,相当于变量引用。-号的左边和右边完全是不同的两个部分。

$ echo $do

Hello World

$ echo ${do-kaka}              #在do有值的情况下,输出do的值。

Hello World

$ unset do                     #删除变量do

$ echo ${do-kaka}              #在没有do变量的情况下,也就是没有值。则输出后面的值。

kaka

$ do=                          #在do为空的情况下。

$ echo ${do-kaka}              #在do有值的情况下,输出do的值,do是空值。

#所以输出空。

这个的别一种方式一般在判断默认值的时候用。如: do=${do:-kaka}

2.  ${变量=值}   里面是等号。$ echo $do

Hello World

$ echo ${do=kaka}                #在do有值的情况下,输出do的值。

Hello World

$ unset do

$ echo ${do=kaka}                #在没有do变量的情况下,或没有值。输出后面的值

kaka

$ echo $do

kaka                             #并且把kaka赋给变量do。

比 - 多了一项功能,只要在变量,就会把kaka赋给do。

3.  ${变量+值}   里面是加号。$ echo $do

Hello World

$ echo ${do+kaka}              #do有值的情况下,输出kaka

kaka

$ unset do

$ echo ${do+kaka}              #在没有do这个变量的情况下或者没有值。那就没有吧。

$ do=

$ echo ${do+kaka}              #空值,输出kaka

kaka

看样子正好与 - 相反, 这个是变量有值则用后面的值,而 - 号是没值则用后面的值。

4.  ${变量?值}$ echo $do

Hello World

$ echo ${do?kaka}

Hello World

$ unset do

$ echo ${do?kaka}              # 看到了没,在没有do这个变量的情况下或者没有值。

# 提示错误信息是 kaka

bash: do: kaka

$ do=

$ echo ${do?kaka}

除了没有值的情况下会报错,并且报错信息是kaka外,就没有别的了。

下面还是关于 - = + ? 的,不过变成了 :-  :=  :+  :?   。

不一样之处就是把空值给抹去了,从此以后空就真的空了, 空不再代表值而存在,

而是跟unset一样。

这里说明一下, 以shell来说。其实unset就是把变量的内存空间的地址给撤销了,

而变量空值,就是有变量的内存空间地址,不过内存空间里面没有数据。

1.  ${变量:-值}$ echo $do

Hello World

$ echo ${do:-kaka}

Hello World

$ unset do

$ echo ${do:-kaka}               #没有do变量,同样的相当于没有值。 输出kaka

kaka

$ do=

$ echo ${do:-kaka}                #空不再代表值, 在do没有值的情况下

#输出kaka

kaka

怎么样,区别只有一点, 空不再代表值了。

2. ${变量:=值}$ echo $do

Hello World

$ echo ${do:=kaka}

Hello World

$ echo $do

Hello World

$ unset do

$ echo ${do:=kaka}

kaka

$ echo $do

kaka

$ do=

$ echo ${do:=kaka}                  #空不再代表值,所以输出kaka

kaka

$ echo $do

kaka

还是那个意思,kaka输出,并且赋值给了do。    空不再代表值了。

3. ${变量:+值}$ echo $do

Hello World

$ echo ${do:+kaka}                #在do有值的情况下,输出kaka

kaka

$ unset do

$ echo ${do:+kaka}                #在do不存在的时候,也就是没有值。 输出do的值,

#而do的值当然是不存在的,输出空白行。

$ do=

$ echo ${do:+kaka}                #do为空,空不再代表值。 没有值就不会输出后面的值。

#同样的空白行。

+ 号是有值才会用后面的那个值的。 跟-号正好相反。

4. ${变量:?值}$ echo $do

Hello World

$ echo ${do:?kaka}

Hello World

$ unset do

$ echo ${do:?kaka}                   #没有do变量,当然没有值,报kaka错误。

bash: do: kaka

$ do=

$ echo ${do:?kaka}                   #do为空,代表没有值。 报kaka错误。

bash: do: kaka

这个跟-号也差不多了, 只不过还里是输出的错误信息。

good boy, nice girl.

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

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

相关文章

Dreamwear如何创建javascript_JavaScript 太糟糕,JVM 有妙招!

虽然 JavaScript 凭借其简洁性、交互性等优势横扫了各大编程语言榜单,但是一直以来,JavaScript 应用程序的工具链极其复杂,引发不少开发者吐槽,在此,我们是否有更好的解决方案将其替代?接下来,本…

linux mint 18.3浏览器,在Linux Mint 19/Ubuntu 18.04中安装Tor Browser浏览器的方法

本文介绍在Linux Mint 19/Ubuntu 18.04系统中安装Tor Browser浏览器的方法,本文不使用Tor的默认Ubuntu存储库,因为它们包含旧版本的Tor。一、添加Tor存储库要在Linux Mint 19/Ubuntu 18.04系统中安装最新版本的Tor,我们将使用官方Tor Apt存储…

code block怎样实现图形界面_微服务入门:Openresty实现API网关

概念介绍如果大家清楚“网关”这个概念,那就很容易理解“API网关“,即所有API的入口。 从面向对象设计的角度看,它与外观模式类似,封装了系统内部架构。在单体应用架构中,没有「 API网关 」的概念,每个项目…

linux mei swap,Linux swapoff命令

Linux swapoff命令Linux swapoff命令用于关闭系统交换区(swap area)。swapoff实际上为swapon的符号连接,可用来关闭系统的交换区。语法swapoff [设备]参数:-a 将/etc/fstab文件中所有设置为swap的设备关闭-h 帮助信息-V 版本信息实例显示分区信息:# sfdi…

vue lang_推荐一个基于Vue 的 H5 快速开发模板

关注 Vue社区,回复“加群”加入我们一起学习,天天进步praisejuejin.im/post/5e612534e51d4527017971a2模板基于 vue-cli4 和 Vant-ui 搭建,进行大型 H5 项目开发最佳实践方案,让我们来一探究竟模板地址 (github.com/push-over/vue…

c语言判断字符是汉字,c语言里面判断字符是否为汉字

这是跟汉字的存储方式有关,西文字符用ASCII码的话,一个字节可以表示一个字符,而汉字用的是双字节表示一个汉字。那么,为了在机器内部区分ASCII码和汉字机内码,就规定汉字的两个字节的最高为都为1.例如:汉字…

springboot urlresource_Spring Boot上传文件+部署到Tomcat

1 概述Spring Boot上传文件,根据官方uploadfile示例修改的,可以打成war放到服务器上(笔者使用的是Tomcat).主要步骤是创建异常类,属性类,接口类与控制器类,最后进行少量修改打包部署到服务器上.2 环境win10Tomcat 9.0.30IDEA 2019.03Spring boot 2.2.2 RELEASE3 新建工程选择sp…

alc236黑苹果驱动_台式机黑苹果独显驱动

黑苹果安装离不开黑苹果驱动程序,常见的有网卡驱动、显卡驱动、声卡驱动、还有其他的一些常用的驱动程序,这里我们单独讲一下黑苹果上驱动英伟达GTX的独显驱动,即我们平常说的N卡,如果文章中介绍的有错误,或者您还有其…

c语言课设报告时钟vc环境,C语言课程设计报告模拟时钟转动程序.doc

C语言课程设计报告模拟时钟转动程序PAGE课程设计报告题 目课 程 名 称 结构化程序设计课程设计院 部 名 称专 业班 级学 生 姓 名 王蕾学 号课程设计地点课程设计学时指 导 教 师金陵科技学院教务处制目 录TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc282443576&q…

c语言break在if中用法,break可用于什么语句 break语句可用于for语句和if语句中 对吗...

c语言中break语句的作用C语言中,break都可以用在什么地方?用到每一个语...break 一般是针对一个循环或者switch中的case,表示跳出当前的循环或选择,即在一个单层循环中,可以通过break 来跳出循环,在switch 中的case通过…

python简单实用案例_Python 21 Django 实用小案例1

8 9 10 {% csrf_token %}11 用户名:12 密码:13 验证码:14 15 16 17

c语言的一段程序,C语言第一个程序(入门)

1.文件类型(基本)c语言源文件 为.c 文件扩展名,例如 main.c 编译后将得到 a.out 文件 运行会得到 我们程序执行的结果2.hello world (第一个程序)#include --------------------> 引入标准库的信息main () { …

matlab table中的文字转string_MATLAB_GUI_教程(2)pushbutton

目录前言上期教程按钮介绍按钮(pushbutton)如何在窗口中创建一个按钮常用属性常用属性练习回调函数的编写规则设置回调函数:定义(编写)回调函数:NoteGUI中各个回调函数之间数据的传递setappdatagetappdata方法按钮的回调函数前言上期教程按钮介绍这个按钮…

c语言数码管的动态显示时间,8位数码管动态显示时间,可调节,调节的数闪烁显示...

原标题:8位数码管动态显示时间,可调节,调节的数闪烁显示// 时间,可调节,//调节时间时,调节的数闪烁显示;//比较两种闪烁的方法;#include#define uint unsigned int#define uchar uns…

python中类和对象_Python里的类和对象简介

---恢复内容开始--- Python里的类 对象属性方法; 对象的属性主要是指主要的特征和参量,而方法主要是指函数; 类是一个具有一定特征和方法的集合,而对象是类的一个;类和对象的关系就如同模具和用这个模具制作出的物品之…

r语言 fread函数参数_R语言 第4章 初级绘图(6)

分析数据间的关系散点矩阵图如果数据框是多维数据,那么plot函数将绘制出两两之间散点图组合成为散点矩阵图(matrix of scatterplots)。散点矩阵图将多个散点图组合起来,以便可以同时浏览多个二元变量关系,一定程度上克服了在平面上展示高维数…

android 渠道打包工具,Android渠道打包技术小结

导读本文对比了渠道4种渠道打包方式:与iOS的单一渠道(AppStore)不同,Android平台在国内的渠道多入牛毛。以我们的App为例,就有27个普通渠道(应用宝,百度,360这种)和更多的推广专用渠道。我们打包技术也经过了若干次的改进。1.利用…

机械臂中的四元素转为旋转矩阵_雅克比矩阵(上)雅克比推导

1、前言 回顾前面几期的内容,在第一期中介绍了机器人的正/逆运动学建模,正运动学解决的问题是如何从关节空间的关节变量描述操作空间的位姿,反之则是逆运动学的内容。将操作空间和关节的空间的关系用以下关系式进行表达。机器人正/逆运动…

DS1819 对应版本的FFMPEG_OpenCV开发笔记(七十):红胖子带你傻瓜式编译VS2017x64版本的openCV4...

若该文为原创文章,转载请注明出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/107837715各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究红胖子(红模仿)的博文…

用Android打出马奔跑的动画,一款非常好用的动画库Lottie

简介Lottie是Android和iOS的移动图书馆,用于解析Adobe After Effects动画,并以Bodymovin作为json导出,并在手机和网络上本机呈现。该项目在GitHub已经获得三个端累计3万的star。在Lottie社区提供了更多的动画下载。如果你是一个设计师还可以将…