shell
来源:互联网 发布:南方报业 知乎 编辑:程序博客网 时间:2024/05/21 06:29
#!/bin/bash
运行.sh文件时,在在新的shell实例中运行
变量
本地变量 x=1
环境变量:系统定义的环境变量USER PWD HOME PATH;用户定义的环境变量 export x=1 或 x=1 export x
预定义变量:$? 上条语句的返回值;$$ 当前进程号;$! 最近一个后台进程号
位置参数变量:$1-10 各个参数;$@ 参数数组;$* 参数整体;$# 参数个数
查看变量 set env
删除变量 unset x
从标准输入读取变量
read -p "提示" -t 超时秒数 x
echo $x
环境变量配置文件加载顺序:/etc/profile /etc/profile/*.sh ~/.bash_profile ~/.bashrc /etc/bashrc
环境变量立即生效:source 或 . 环境配置文件
运算
声明变量类型:declare -a 数组
-i 整型 、-x 环境变量 、-r 只读
字符串连接:“$x”123 ${x}123 "$x 123"
四则运算:$(expr $a+$b) 、 $[$a+$b] 、$(($a+$b))
获取命令的返回:$(date)
参数展开:${x:1:4} 截取字符串,${#x} 字符串长度,${x/a/b}用b替换x中a的匹配,${x,,}小写化,${x^^}大写化
${y-a} 相当于 y || a || null ,${y+a} 相当于 y?a:null
字符截取
行截取: grep 正则 文件
列截取:cut -f 1,3 -d ":" 文件 #截取1、3列,以分号为分隔符,默认以制表符为分隔符
格式化输出:print "%s" $(cat 1.txt)
awk命令:awk '条件{动作} 条件{动作}' 文件名
不定长空格的列截取:df -h | awk '{print $3}' #截取第三列
指定分隔符的列截取:awk 'BEGIN{FS=":"} {print $3}'
同时行列截取:awk '$3>60{print $1}'
其他的命令:sort 排序、wc 统计、unique 去重
sed命令:sed -i '行范围 动作' 文件名 #除了用行号也可以用正则来匹配行
删除行:sed -i '2,4d' 文件名
后追加行:sed -i '2a haha' 文件名
前插入行:sed -i '2i haha' 文件名
替换行:sed -i '2c haha' 文件名
替换字符:sed -i 's /ka/ha/g' 文件名 #没有g的话,只替换一次
流程控制
条件:
文件条件:[-d a] 是否存在目录、[-f a.txt] 是否存在文件、[-e a]是否存在文件或目录、-r -w -x 是否存在并且存在相应权限
数组条件:[23 -ge 22] 是否相等、-ne 是否不等、-gt 大于、-lt 小于、-ge 大于等于、-le 小于等于
字符串条件:[-z $x] 字符串是否为空、-n 是否非空、[$x == $y] 是否相等、!= 是否不等
条件连接:-a 并且、-o 或、! 非
if 判断:
if [ ]
then
程序1
elif [ ]
then
程序2
else
程序3
fi
case判断:
case "$x" in
1)
程序
;;
*}
程序
;;
esac
for 循环:
for i in $a #数组或空格、换行隔开的字符串
do
程序
done
或者
for ( ( i=0;i<100;i=i+1 ) )
do
程序
done
while循环:
while[ ]
do
程序
done
until 循环:
until[ ]
do
程序
done
函数
function fn()
{
return $(($1 + $2)) #如果无return 则默认返回最后一条语句的返回值
}
调用:x = $(fn 2 3)
标准输入与输出
标准输入:默认为键盘,文件描述符 0,
标准输出:默认为控制台,文件描述符 1。标出输出可以被重定向为文件或设备。&>/dev/null,输出到空设备,即丢弃输出
标出错误输出:默认为控制台,文件描述符 2。&2>1,将标准错误输出重定向到标准输出
- shell
- shell
- shell
- shell
- shell
- Shell
- shell
- Shell
- shell
- shell
- SHELL
- Shell
- shell
- shell
- shell
- shell
- shell
- shell
- React实践系列笔记-Components
- (4.1.27.3)使用AndroidStudio编译NDK的错误解决方案
- Android UI之布局
- 电话本管理系统
- DVWA之Command Execution
- shell
- React实践系列笔记-Interactivity and Dynamic UIs
- 欧拉通路的求解
- android--圆角框--dialog(圆角框)
- Processing 教程(7) - 平移、旋转、放缩
- 1009. 说反话 (20)
- PHP 设计模式之观察者模式
- React实践系列笔记-Library
- HDU 3231 Box Relations(拓扑排序)