shell中的变量替换
shell中的变量测试
shell中字符串的处理
${#String} 获取字符串长度
expr length "$string"
expr index $string $substring 获取子字符串的索引
expr match $string $substring 从头开始,获取子字符串的位置 `expr match “$vatstr” zhang`
expr索引下表是从1开始
抽取子串
索引下表从0开始
${string:position}
${string:position:length}
${string: (-position)} 从右开始
${string:posttion} 从左开始
echo `expr substr $string $position(下标) $length` 执行的时候需要加上单引号
命令替换语法格式
```bash
`command` #反向引号
$(command)
cat /etc/passwd | cut -d ":" -f 1
data +%Y
echo "this is $(($(data +%Y) + 1)) year" 两个括号用于计算,其中这个是命令替换 $(data +%Y)
# 有类型变量
```bash
shell 是一种弱类型变量语言
declare typeset 定义变量的类型
var=”hello”
declare -r var 声明为只读,无法修改的变量
如果声明了一个变量为整形,其他变量在合成时会自动成为整形计算
declare -a array
array=(“hell” “o” “owr” “world”) 中间用空格分隔 ${array[@]} ${#array[@]}
了解,shell中数组的操作
declare -x 声明一个环境变量 在脚本中可以使用(不止在终端)
declare +r 取消一个只读变量
expr 使用(数学运算) 注意参数之间的空格
注意上图的前两个
expr $num1 \| $num2
判断变量是否相等尽量使用 expr
expr 只能对整数进行运算
如果一个命令执行不成功,$? 是一个非零的变量 但是 expr正好相反,具体看上表
bc 主要用于做浮点运算
which bc (启用)
scale=2 指明精确度
echo “scale=4;34+5” | bc 用分号分隔两个命令
3-1 函数定义和使用
定义语法 functionname(){} function name{}
调用函数 function $1 $2 参数之间用空格隔开
nohup sh ngind_daemon.sh & 在后台运行 tail -f nohup.out
计算器脚本
3-3 函数的返回值
有两种方式 return echo
3-4局部变量和全局变量
3-5函数库
find 命令的使用
locate 命令的使用
grep egrep 的用法
grep -E “python|PYTHON” file
grep -r love
sed的使用
sed是一个流编辑器,对标准输出或文件进行处理
sed -n -r ‘python|PYTHON/p’ sed.txt 扩展正则表达式
sed -i ‘s/love/like/g’ sed.txt s表示的替换 //s///g;p
sed -n -e ‘/python/p’ -e ‘/PYTHON/p’ sed.txt
sed -n -f edit.sed sed.txt edit.sed的内容就是为了保存复杂的动作
6-2 sed 中pattern的用法
6-4 sed中的编辑命令
sed ‘1d’ passwd 不会对源文件操作
sed -I ‘1d’ passwd 会对源文件进行操作
sed -I ‘/\/bin\/bash/a this is user which can login’ passwd 行后追加
sed -I ‘//,//I AAAAAAAAAAAAA’ passwd
sed -I ‘/root/r list’ passwd list是一个文件 ,将文件的内容追加到匹配的行后
sed ‘/\/bin\/bash/w /tmp/user_login.txt’ passwd 将匹配的结果写入文件中
sed 的修改
sed 的反向引用
sed -I ‘s/had..p/&s/g’ paswd 在匹配到的结尾加s
sed -I ‘s/\(had..p\)/\1s/g’ paswd &和\1的效果相同 前面需要加括号
sed -I ‘s/\(had\)../\1doop/g’ paswwd 反向引用括号里面的
shell 中存在变量是尽量使用双引号
6-5 sed 删除操作
6-6 sed 修改文件内容
6-7 sed 添加内容操作
a I (在匹配行前添加) r w