shell语法
基本语法列表
#linux组成:内核+工具 #linux启动:
. getty:提示登录名和密码,输入之后调用login
. login:login验证用户名和密码,然后调用shell
. shell:用户与系统的交互接口 #文件的分类:普通文件、目录、特殊文件。
. 普通文件的:ls cat cp mv rm
. 目录:ls mkdir rmdir cp mv rm #文件的属性:权限、所有者、组
. 权限:chmod
. 所有者、组:chown chgrp #进程:前台,后台
. & fg bg nohup(终端断开同样执行)
. jobs ps top kill
. exec #变量:普通变量、数组变量
. $
. 数组变量赋值:ksh:set -A name value1 value2 value3,bash: name(value1 value2 value3)
. 数组的访问:${name[index]},${name[*]},${name[*]}
. readonly
. set unset
#变量:局部变量、环境变量、Shell变量
. shell变量:PWD UID SHLVL REPLY RANDOM SECONDS IFS PATH HOME
. export #替换:文件名替换、变量替换
. 文件名的替换:* ? [characters]
. 变量替换
${parameter:-word} 若parameter为空或未设置,使用word代替parameter进行替换,parameter的值不变
${parameter:+word} 若parameter设置了,使用word代替parameter进行替换,parameter的值不变
${parameter:=word} 若parameter为空或未设置,则parameter设置为word
${parameter:?message} 若parameter为空或未设置,这message作为标准错误打印出来
. 命令替换:`command`
. 算术替换:$((express)) #参数:
. $:程序名字
. $n:第n个参数
. $#:参数数量
. $*:所有的参数
. $@:全部
. $?:
. $$:
. $!:
. shift #输入
. 向屏幕:echo printf
. 重定向输出:> >> |
. 重定向输入:<
. read #文本过滤
. head tail grep sort uniq tr
. sed awk #常用工具
eval
:
type
sleep
find
xargs
expr #控制流
. if
if list1
then
list2
elif list3
then
list4
else
list5
fi
. case
case word in
pattern1)
list1
;;
pattern2)
list2
;;
esac
. while
while command
do
list
done
. until
until command
do
list
done
. for
for name in value1 value2 ... valueN
do
list
done
. select
select name in value1 value2 ... valueN
do
list
done
. break continue #判断
. 判断 test [ ]
. 文件判断
-f file:文件是否存在
-d path:路径是否存在
-r file:是否可读
-w file:是否可写
-x file:是否可执行
. 字符串判断
-z string:字符长度为0
-n string:字符长度不为0
string1 = string2:相等
string1 != string2:不相等
. 数字比较
-eq:=
-ne:<>
-lt:<
-gt:>
-le:<=
-ge:>=
. 逻辑运算
!expr:非
expr1 -a expr2:且
expr1 -o expr2:或
&&
|| #函数
. 定义
name( ) { list ; } #tips
#读文件
while read Line
do
echo $Line
done < file
#find
find * -name '*.sh'
#输入一长段提示
echo 'one
two'
echo 'one\ntwo'
cat <<EOF
NICE DAY IN THE WORLD.
THIS IS A VERY NICE DAY.
EOF
#最后一个参数的求法
eval last=\${$#}
shell语法的更多相关文章
- makefile中的shell语法
在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙.下面总结了一些. 1:尽在Makefile文件的目标项冒号后的另起一行的代码才是 ...
- Hadoop学习笔记之HBase Shell语法练习
Hadoop学习笔记之HBase Shell语法练习 作者:hugengyong 下面我们看看HBase Shell的一些基本操作命令,我列出了几个常用的HBase Shell命令,如下: 名称 命令 ...
- 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 ...
- Shell 语法 if 、 case 、for 、 while、 until 、select 、repeat、子函数
if语法 : if [ expression ] then commandselif [ expression2 ] then commandselse commandsfi ...
- Shell 语法之结构化命令(流程控制)
许多程序在脚本命令之间需要某种逻辑流控制,允许脚本根据变量值的条件或者其他命令的结果路过一些命令或者循环执行这些命令.这些命令通常被称为结构化命令.和其他高级程序设计语言一样,shell提供了用来控制 ...
- shell语法快速入门(1)
#得到绝对路径 DIR=$(cd `dirname $0`;pwd) $DIR/file.txt #去掉#注释 egrep -v "(#|^$)" /etc/zabbix/zabb ...
- shell语法基础
一.变量 1.linux大小写敏感,变量取名要注意大小写.可以通过变量名前面加$来访问变量的内容.可以通过使用read命令来将用户输入的值赋给一个变量. 2.给变量赋值时,如果字符串中包含空格,就必须 ...
随机推荐
- 原生js实现fadein 和 fadeout
js里面设置DOM节点透明度的函数属性:filter= "alpha(opacity=" + value+ ")"(兼容ie)和opacity=value/10 ...
- 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\106f9ae8\cc0e1
在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件"c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.Ne ...
- vs2013给类添加默认注释
目录:D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\20 ...
- 线程join理解
1.python默认参数创建线程后,不管主线程是否执行完毕,都会等待子线程执行完毕才一起退出,有无join结果一样 2.如果创建线程,并且设置了daemon为true,即thread.setDaemo ...
- Linux配置JDK1.7和Resin4.0
1.安装JDK1.7 (1)下载 官网下载路径:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-18802 ...
- 学习ASP.NET 5和MVC6
今天很荣幸的参加了微软开源跨平台讲座,充分认识了下一个版本的ASP.NET所带来的激动人心的特性.虽然过去已经断断续续的了解了一些ASP.NET5和MVC6与EF7的动态,但是都没有这一次来的系统化( ...
- Angularjs -Promise - $http
https://www.peterbe.com/plog/promises-with-$http
- 人工智能之一《tensorflow》
http://wiki.jikexueyuan.com/project/tensorflow-zh/
- vue 组建实现数据的双向绑定
<!DOCTYPE html><html><head> <style>body { font-family: Helvetica Neue, Aria ...
- centos6.5 更新yum源
在使用centos过程中,自带的yum源包,不能满足的情况下,这个时候就可以考虑升级yum源了.国内用的比较多的是163镜像地址为http://mirrors.163.com/.help/centos ...