[sh]shell语法小结
基础语法
数字比较 -lt -eq -gt
[ `ps -ef|grep nginx|grep -v grep|wc -l` -eq 0 ]
str比较 == !=
[ $USER == "root" ]
-z 变量未定义或为空串都会命中-z
[ -z $1 ]
数字运算
- 整数
echo $((1+2)) # 不能计算小数
echo "1+2"|bc
- 小数
echo "1.2+2.3"|bc
- 文件检测
-f [ -f /etc/fstab ] && echo 'xx'
-d
-e
-rwx
$? $#
$0 $1 $2
$?
0 正常
1 失败
- if
if then
fi
if ;then
elif ;then
fi
if [ $age -gt 100 ];then
echo "age gt 100"
elif [ $age -gt 50 ];then
echo "get gt 50"
fi
- for
for i in `cat `;do
done
注: for对横排空格分隔 和 一行一个item都支持遍历
- 批量创建用户
for user in `cat user_list.txt`;do
useradd $user > /dev/null 2>&1
if [ $? -eq 0 ];then
echo "created user $user succ"
else
echo "created user $user faild"
fi
done
- 批量ping
for ip in `cat ip_list.txt`;do
ping -i 0.2 -c 3 -W 2 $ip > /dev/null 2>&1
if [ $? -eq 0 ];then
echo "host $ip online"
else
echo "host $ip offline"
fi
done
- while(好处是支持死循环)
while :;do
read -p '输入新运数字: ' num
if [ -z $num ];then
continue
fi
if [ $num -gt 100 ];then
echo "succ"
else
echo "faild"
fi
done
- case分支, 好处是支持正则
while :;do
read -p "请输入一个字符" char
case $char in
[a-z]|[A-Z])
echo "输出的值是字符"
;;
[0-9])
echo "输入的是数字"
;;
*)
echo "default running"
esac
done
常用命令
find
grep
sed
awk
- cat命令
name="mm"
age=22
cat > file.txt <<EOF
name = $name
age = $age
EOF
> /dev/null 2>&1
文件描述符
0 stdin
1 stdout
2 stderr
- 生成序列
seq -s ' ' 10
echo {1..10}
ping命令
-i interval
-c count
-W timeout
正则
${name} # 引用变量
$(date +%F) # 表达式
[sh]shell语法小结的更多相关文章
- shell知识点小结
目录 引言 shell中的数组 数组的定义 数组的使用 实际的例子 shell中大小的比较 shell中的括号 shell中函数的定义 杂项知识点 字符串转数组 常用判断标志 linux后台运行相关 ...
- Shell语法规范
ver:1.0 博客:https://www.cnblogs.com/Rohn 本文介绍了Shell编程的一些语法规范,主要参考依据为谷歌的Shell语法风格. 目录 背景 使用哪一种Shell 什么 ...
- shell语法习题练习进阶版
第4章 shell语法深度习题练习 4.1 使用if,case,函数的方法将服务改成system(centos6) 4.1.1 if方法 4.1.1.1 system实现 4.1.1.1.1 编写代码 ...
- 读完学会shell语法,shell脚本80%已经学会
第3章 shell语法讲解 3.1 shell运算讲解 3.1.1 运算符的讲解 3.1.2 shell运算方式的讲解 3.1.2.1 $(())运算 [root@m01 test_init] # a ...
- makefile中的shell语法
在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是 ...
- source command not found in sh shell解决办法
在Ubuntu系统中执行脚本的时候突然出现错误"source command not found in sh shell" 这个其实在Ubuntu 当中 执行脚本默认的使用的是da ...
- Hadoop学习笔记之HBase Shell语法练习
Hadoop学习笔记之HBase Shell语法练习 作者:hugengyong 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令 ...
- [sh]shell小结
一 判断 -d 测试是否为目录.-f 判断是否为文件. -s 判断文件是否为空 如果不为空 则返回0,否则返回1 -e 测试文件或目录是否存在. -r 测试当前用户是否有权限读取. -w 测试当前用户 ...
- shell语法
基本语法列表 #linux组成:内核+工具 #linux启动: . getty:提示登录名和密码,输入之后调用login . login:login验证用户名和密码,然后调用shell . shell ...
随机推荐
- get获取后台数据
let url = $.getCookie('prefixUrl')+'/currencyRatesManage/getCurrency'; let vm=this; $.ajax({ url: ur ...
- 【转】bitbake 笔记
原文 http://blog.csdn.net/xiaofeng_yan/article/details/6757725 1 当你已经编完一个系统比如sato映像,在编一个meta-toolchain ...
- Vi 入门简易教程
首先,请注意,以下所讲的,全部是键盘在英文输入模式下.如果键盘是在中文输 入模式,全部的指令不正确. vi 有两种模式: Command Mode(指令模式) and Insert Mode(我姑且称 ...
- python文件操作:文件指针移动、修改
一.文件指针移动 二.修改 一.文件指针移动 #大前提:文件内指针的移动是Bytes为单位的,唯独t模式下的read读取内容个数是以字符为单位 # f.read(3) # with open('a ...
- Centos7 更改网卡名称
cd /etc/sysconfig/network-scripts/ 将要改名的网卡配置文件重命名,例如 mv ifcfg-eth1 ifcfg-eth0 vim ifcfg-eth0 修改devic ...
- python中_、__、__xx__(单下划线、双下划线等)的含义
(1)_xxx "单下划线 " 开始的成员变量相当于私有变量,也叫做保护变量,意思是只有类实例和子类实例能访问到这些变量,需通过类提供的接口进行访问(可以定义有点像java中的ge ...
- java线程基础巩固---线程生产者消费者的综合实战结合Java8语法
基于上一次[http://www.cnblogs.com/webor2006/p/8909558.html]学习的多个生产者与多个消费者模型,此次用另外一个案例来进一步巩固线程之间的调度处理,这里还是 ...
- [CEOI1999]Sightseeing trip(Floyed)
[CEOI1999]Sightseeing trip Description There is a travel agency in Adelton town on Zanzibar island. ...
- 怎么卸载hexo
npm uninstall hexo -g 卸载失败 npm uninstall hexo-cli -g 推荐这个,成功卸载
- laravel开发扩展记录
whoops 错误提示扩展 whoops 是一个非常优秀的 PHP Debug 扩展,它能够使你在开发中快速定位出错的位置.laravel默认安装.区域 1 -- 是错误异常的简介区域 2 -- 是错 ...