【每日一记10】+第3天+Shell 字符串
  

呱唧呱唧 690

{{ttag.title}}
Shell 字符串
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。
单引号str='this is a string'
单引号字符串的限制:
  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

双引号your_name='runoob'str="Hello, I know you are \"$your_name\"! \n"echo -e $str
输出结果为:
Hello, I know you are "runoob"!
双引号的优点:
  • 双引号里可以有变量
  • 双引号里可以出现转义字符

拼接字符串your_name="runoob"# 使用双引号拼接greeting="hello, "$your_name" !"greeting_1="hello, ${your_name} !"echo $greeting  $greeting_1# 使用单引号拼接greeting_2='hello, '$your_name' !'greeting_3='hello, ${your_name} !'echo $greeting_2  $greeting_3
输出结果为:
hello, runoob ! hello, runoob !hello, runoob ! hello, ${your_name} !获取字符串长度string="abcd"echo ${#string} #输出 4提取子字符串
以下实例从字符串第 2 个字符开始截取 4 个字符:
string="runoob is a great site"echo ${string:1:4} # 输出 unoo
注意:第一个字符的索引值为 0
查找子字符串
查找字符 io 的位置(哪个字母先出现就计算哪个):
string="runoob is a great site"echo `expr index "$string" io`  # 输出 4
注意: 以上脚本中 ` 是反引号,而不是单引号 ',不要看错了哦。

Shell 数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
类似于 C 语言,数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。
定义数组
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 2 ... n)
例如:
array_name=(value0 value1 value2 value3)
或者
array_name=(value0value1value2value3)
还可以单独定义数组的各个分量:
array_name[0]=value0array_name[1]=value1array_name[n]=valuen
可以不使用连续的下标,而且下标的范围没有限制。
读取数组
读取数组元素值的一般格式是:
${数组名[下标]}
例如:
valuen=${array_name[n]}
使用 @ 符号可以获取数组中的所有元素,例如:
echo ${array_name[@]}获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
# 取得数组元素的个数length=${#array_name[@]}# 或者length=${#array_name
  • }# 取得数组单个元素的长度lengthn=${#array_name[n]}
    Shell 注释
    以 # 开头的行就是注释,会被解释器忽略。
    通过每一行加一个 # 号设置多行注释,像这样:
    #--------------------------------------------# 这是一个注释# author:菜鸟教程# site:www.runoob.com# slogan:学的不仅是技术,更是梦想!#--------------------------------------------##### 用户配置区 开始 ######## 这里可以添加脚本描述信息# ###### 用户配置区 结束  #####
    如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?
    每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。
    多行注释
    多行注释还可以使用以下格式:
    :<<EOF注释内容...注释内容...注释内容...EOF
    EOF 也可以使用其他符号:
    :<<'注释内容...注释内容...注释内容...':<<!注释内容...注释内容...注释内容...!
  • 打赏鼓励作者,期待更多好文!

    打赏
    4人已打赏

    一一氵 发表于 2020-9-8 10:57
      
    学习一下实施案例
    sxfusr 发表于 2020-9-8 11:31
      
    打卡学习
    新手727241 发表于 2020-9-8 11:34
      
    感谢分享
    新手262779 发表于 2020-9-8 11:41
      
    感谢分享
    新手727241 发表于 2020-9-8 17:27
      
    学习一下
    新手158601 发表于 2020-9-15 10:48
      
    打卡学习
    发表新帖
    热门标签
    全部标签>
    西北区每日一问
    每日一问
    干货满满
    技术盲盒
    技术笔记
    产品连连看
    GIF动图学习
    新版本体验
    标准化排查
    技术咨询
    信服课堂视频
    安装部署配置
    功能体验
    2023技术争霸赛专题
    自助服务平台操作指引
    每周精选
    解决方案
    设备维护
    秒懂零信任
    升级
    高手请过招
    升级&主动服务
    答题自测
    SDP百科
    玩转零信任
    信服圈儿
    通用技术
    技术晨报
    社区新周刊
    畅聊IT
    专家问答
    技术圆桌
    在线直播
    MVP
    网络基础知识
    安全攻防
    上网策略
    测试报告
    日志审计
    问题分析处理
    流量管理
    每日一记
    运维工具
    云计算知识
    用户认证
    原创分享
    sangfor周刊
    VPN 对接
    项目案例
    SANGFOR资讯
    专家分享
    技术顾问
    信服故事
    功能咨询
    终端接入
    授权
    资源访问
    地址转换
    虚拟机
    存储
    迁移
    加速技术
    排障笔记本
    产品预警公告
    S豆商城资讯
    技术争霸赛
    「智能机器人」
    追光者计划
    深信服技术支持平台
    社区帮助指南
    答题榜单公布
    纪元平台
    卧龙计划
    华北区拉练
    天逸直播
    以战代练
    山东区技术晨报
    文档捉虫活动
    齐鲁TV
    华北区交付直播
    2024年技术争霸赛
    北京区每日一练
    场景专题
    故障笔记
    排障那些事
    高频问题集锦

    本版版主

    12
    185
    6

    发帖

    粉丝

    关注

    本版达人

    LoveTec...

    本周分享达人

    新手24116...

    本周提问达人