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