一、字符串

字符串是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[@]}

最新文章

  1. osgearth_city例子总结
  2. LeetCode:Convert Sorted Array to Binary Search Tree,Convert Sorted List to Binary Search Tree
  3. TWICImage.SaveToStream内存泄漏的解决办法
  4. 160920、springmvc上传图片不生成临时文件
  5. HDU 1403 Longest Common Substring(后缀数组,最长公共子串)
  6. MySQL Mysqlslap
  7. Netty 5.0源码分析之综述
  8. USB的八个问题和答案(转)
  9. JavaJavaScript小问题系列之JSON解析
  10. 多个onload事件写法
  11. Linux动态频率调节系统CPUFreq之三:governor
  12. centos7上PhantomJS 过期之后改用Chrome时填的坑
  13. JS 正则中的命名捕获分组
  14. javascript 的引入
  15. C# 微信网页授权多域名解决
  16. Mycat安装教程
  17. 【LOJ】#121. 「离线可过」动态图连通性
  18. 微信小程序 - 自定义弹窗组件
  19. 【WPF】获取下拉列表(ComboBox)的选项(ComboBoxItem)的内容
  20. python之WebSocket协议

热门文章

  1. 开发完成的springboot项目扩展 swagger
  2. Java 创建bat命令文件运行可执行jar包
  3. Python文件的几种读写方式
  4. [LeetCode]220. 存在重复元素 III
  5. python-2:爬取某个网页(虎扑)帖子的标题做词云图
  6. c# 动态加载和卸载DLL程序集
  7. 05.AutoMapper 之配置验证(Configuration Validation)
  8. Homebrew学习(二)之安装、卸载、更新
  9. npm学习(八)之如何使用语义化版本
  10. 普通交叉验证(OCV)和广义交叉验证(GCV)