一、字符串

字符串是shell编程中最常用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。

单引号

name='xiaoxi'

单引号的限制:

  • 单引号里的任何字符都会原样输出,单引号中的变量是无效的。

  • 单引号字串中不能出现单引号(对单引号使用转义符也不行)。

双引号

name="xiaoxi"

uname="${name}\"test"

双引号的优点:

  • 双引号里可以包含变量

  • 双引号里可以出现转义字符

不加引号

name=xiaoxi

uname=${name}\"test

  不加引号和双引号效果类似,只是开头和结尾没有双引号。

拼接字符串

name='xiaoxi'

uname="${name}test"

uname2="$name$uname"

echo $name $uname $uname2

输出:

[root@xiaoxitest ~]# ./test.sh
xiaoxi xiaoxitest xiaoxixiaoxitest

获取字符串长度

name='xiaoxi'

echo ${#name}

输出:

[root@xiaoxitest ~]# ./test.sh
6

提取字符串

name='xiaoxitest'

echo ${name:0:6}

输出:

[root@xiaoxitest ~]# ./test.sh
xiaoxi

查找字符串

name='xiaoxitest'
echo `expr index ${name}  xiaoxi`

输出:

[root@xiaoxitest ~]# ./test.sh
1    #1表示存在,0表示不存在

二、转义字符

name='xiaoxitest'
echo -e "xiaoxi\ntest"

输出:

[root@xiaoxitest ~]# ./test.sh
xiaoxi
test

这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出:

xiaoxi\ntest

其它转义字符也可以用于echo中:

三、表达式

将命令结果存储在变量中

name=`who | awk {'print $1'}`  #注意是反引号,位于Esc键下方
count=$(who | wc -l)
echo -e "The user login count: ${count}\n${name}"

输出:

[root@xiaoxitest ~]# ./test.sh
The user login count: 2
root
xyp

四、数组定义

bash仅支持一维数组,并且没有限制数组的大小。用括号表示数组,数组元素用“空格”符号或换行分隔。

例1:

name=(aa bb cc)

例2:

name=(

aa

bb

cc

)

也可单独定义数组的各个元素

name[0]=aa

name[1]=bb

name[3]=cc

五、数组读写

例:

#!/bin/bash
sar=(aa bb cc)
echo sar:${sar[*]}
name[]=aa
name[]=bb
name[]=cc
uname=(${name[]} dd)
echo "name:${name[1]} uname:${uname[*]}"

输出:

[root@xiaoxitest ~]# ./test.sh
sar:aa bb cc
name:bb uname:bb dd

使用@ 或 * 可以获取数组中的所有元素,例如:

${name[*]}

${name[@]}

shell基础操作的更多相关文章

  1. Shell基础学习小结

    0 shell基础概念 Shell是解释性语言,使用脚本编程语言的好处是,它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象:缺点是它们的效率通常不如编译型语言.Shell命令有本 ...

  2. bash shell学习-shell基础 (笔记)

    When you hoist the sails to cross the sea, you willride the wind and cleave the waves. "长风破浪会有时 ...

  3. Linux实战教学笔记17:精简shell基础

    第十七节 精简shell基础 标签(空格分隔): Linux实战教学笔记 1,前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, ...

  4. gulp基础操作实践

    按照gulp中文文档对gulp基础操作的一些实践练习,记录以防忘掉. 一,选择并输出文件:gulp.src(globs[,options]) eg:gulp.src('src/less/index.l ...

  5. 【mongodb系统学习之八】mongodb shell常用操作

    八.mongodb  shell常用基础操作(每个语句后可以加分号,也可以不加,看情况定(有的工具中可以不加),最好是加): 1).进入shell操作界面:mongo,上边已有演示: 2).查看当前使 ...

  6. 【Linux 操作系统】Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用

    . : 关机, 如果将Linux默认运行等级设置为0, 系统将无法启动; -- : 多用户模式, 允许使用网络文件系统, 一般不使用图形界面登陆就是这种模式; -- : 多用户图形界面模式, 该模式下 ...

  7. Windows7系统基础操作

    Windows7系统基础操作 操作系统是人机交互的时候桥梁,一种计算机软件,软件分为:系统软件+应用软件 区别是:系统软件是可以直接安装在硬件上的计算机由硬件和软件两部分组成 操作电脑核心是操作电脑的 ...

  8. shell基础及变量

    一 Shell概述 1.Shell的作用——命令解释器,“翻译官” shell作为一个人机接口,用于解释用户输入的命令,将命令解释为Linux内核可以执行的2进制代码,并将执行的结果返回在标准终端上. ...

  9. Linux基础学习(10)--Shell基础

    第十章——Shell基础 一.Shell概述 1.Shell是什么: (1)Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来 ...

随机推荐

  1. 手写数字识别 卷积神经网络 Pytorch框架实现

    MNIST 手写数字识别 卷积神经网络 Pytorch框架 谨此纪念刚入门的我在卷积神经网络上面的摸爬滚打 说明 下面代码是使用pytorch来实现的LeNet,可以正常运行测试,自己添加了一些注释, ...

  2. CF1142B Lynyrd Skynyrd

    题目 有两种做法: 第一种是\(O(nlog\ n)\)的. 我们预处理两个数组: \(pre_i\)表示\(p\)中\(i\)前面的那个数是\(pre_i\). \(lst_i\)表示\(a\)中\ ...

  3. Linux学习大纲(高人整理)

    1.Linux初级 1.1 OS操作系统的原理 1.2 了解常用命令 开机关机 时间管理:date cal clock 1.3 目的结构.目的管理 树形结构 tree cd 1.4 文件管理.文件查找 ...

  4. ALS部署Spark集群入坑记

    [Stage 236:> (0 + 0) / 400]17/12/04 09:45:55 ERROR yarn.ApplicationMaster: User class threw excep ...

  5. javaweb:Response/Request的概述 (转发、重定向、get/post)转

    请求响应流程图 1]response 1   response概述 response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletR ...

  6. [转载]关于机器上已安装CUDA,但在anaconda下tensorflow出现cudaGetDevice() failed问题的解决

    机器已经安装了CUDA 9.1,驱动为390.58,我补装了对应的cudnn,并且测试通过,但是在anaconda环境下,用conda install tensorflow-gpu=1.12后,运行s ...

  7. Linux Firewalld 简明介绍

    防火墙作为保护服务器不受外部网络流量影响的一种方式.可以让用户定义一系列规则来控制外部网络中流入的流量,从而达到允许或阻塞的效果.firewalld 是防火墙服务的一个守护程序,实现了动态修改拥有 D ...

  8. CF Gym102028G Shortest Paths on Random Forests

    传送门 这题要求的期望,就是总权值(所有不在同一个连通块点对的贡献+同一连通块点对的贡献)/总方案(森林个数) 先求森林个数,森林是由一堆树组成的,而根据purfer序列,一棵\(n\)个点的有标号的 ...

  9. linux vps定时备份网站、数据库命令sh

    vps定时备份数据库命令,将下面的代码保存为backsql.sh,然后设置定时任务运行即可. cd /home/admin/backup #切换到备份目录 btimes=$(date +%y%m%d% ...

  10. Redhat 关闭防火墙和selinux

    查看防火墙状态.systemctl status firewalld 临时关闭防火墙命令.重启电脑后,防火墙自动起来.systemctl stop firewalld 永久关闭防火墙命令.重启后,防火 ...