Linux shell 基础
目录
一、shell脚本的基本使用
1、语言规范
2、变量
3、重定向(>,>>)
二、运算符和常用判断
1、比较运算符
2、逻辑运算符
3、常用判断
三、程序结构
1、分支(if语句)
2、循环
四、函数
shell的本质是一段应用程序,它使得用户和操作系统之间可以交互,是用户和操作系统的中介。
一、shell脚本的基本使用
1、语言规范
(1)文件以.sh结尾;
(2)文件头为:#!/bin/bash (表示使用的是bash shell);
(3)以#开头为注释;
(4)输出: echo "输出内容";
(5)读取:read -p "自定义读取提示" name (name为读取内容设置的变量名,也可设置多个变量名,以空格分隔,在读取内容时也会以空格分隔内容并分配到相应的变量名)
2、变量
(1)变量的创建级赋值
变量名=变量值
变量名不用声明类型,由字母、数字和下划线组成,但不能以数字开头;默认的大写变量名表示系统变量,小写表示普通变量;
变量值可以为字符、数字和命令,当变量值为命令时需用反单引号(即esc下边的键)包围起来;
例:w=1`ls -l`
(2)变量值的输出($)
需在变量前加上$符号,当使用echo加单引号时输出的只是纯文本,而不会将变量的值提取出来,想要得到变量的值,只能使用双引号将变量包围;
显示所有用户自定的变量用命令:set
显示所有的系统变量用命令:env
(3)从程序外部给程序传递参数
可在程序内部加上$1,表示从外部传进程序的第一个参数;同理$2表示第二个参数,外部的多个参数之间以空格分隔。
例:给程序a.sh传入ab,22两个参数,使用命令:a.sh ab 22
$0表示程序自身,$#表示所有输入参数的个数,$@表示所有的参数。
如果不是很明了可参考python中的sys.argv,机理基本一样 http://www.cnblogs.com/aland-1415/p/6613449.html
3、重定向(>,>>)
即通过命令将结果输入到文件中
例:ls -l >name.txt
如果文件不存在将会创建文件,如果文件存在,使用“>”时将会对文件进行覆盖重写,使用“>>”将会在文件的末尾进行追加写入。
也可以在>或>>前加上1或2,注意不要与>,>>之间有空格,其中1表示正确的命令,2表示错误的命令。
二、运算符和常用判断
1、比较运算符
等于:==
不等于:!=
大于:>或-gt
小于:<或-lt
大于等于:>=或-ge
小于等于:<=或-le
在使用(( ))中的条件中只能使用>等符号而不能使用-gt,在shell中(( ))和[]在一定程度上是等价的。
2、逻辑运算符
逻辑与:-a
逻辑或:-o
逻辑非:!
3、常用判断
-r 文件名:文件是否存在且可读
-w 文件名:文件是否存在且可写
-x 文件名:文件是否存在且可执行
-f 文件名:判断文件是否存在且是普通文件
-d 文件名:文件是否存在且是目录
-e 文件名:文件是否存在
-z 变量:判断字符串长度是否等于0
-n 变量:字符串长度是否不等于0
在需加[]的条件判断中,如果在-r等前边加上test则不用加[];
三、程序结构
1、分支(if语句)
(1)基本格式:
if [ 条件 ]
then
语句1
else
语句2
fi
注意:每个[ ] 左右两端都需要有空格,条件语句中如果包含变量则需要用双引号包围。
then也可以写在条件之后,不过要在条件之后加上分号。
(2)多个条件连接格式:
if [ condition1 ] ;then
sentence1
elif [ condition2 ] ;then
sentence2
elif [ condition3 ] ;then
sentence3
else
sentence4
fi
(3)case选择
使用格式:
case $变量名 in
"值1")
语句1;;
"值2")
语句2;;
...
*)
语句n
esac
其中;;表示语句结束,*)表示上边所有结果都不符合的最后选择;
值也可以用区间,但最多只能用0-9的数字。
2、循环
(1)while循环
格式
while [ 条件 ]
do
语句
done
常用循环变量变化写法:
((i++))
((i+=1)
let i=i+1
i=$(($i+1))
i=$ [ $i+1 ]
常用运算迭代写法:
((sum=$sum+$i))
sum=$[$sum+$i]
sum=$(($sum+$i))
(2)for 循环
for 迭代子
do
语句
done
for循环常用迭代子的写法:
((i=1;i<=10;i++))
i in 1 2 3 4 5 6
i in `seq 1 2 15` #1和15表示起始点,2表示步长
四、函数
函数构造
函数名(){
内容
}
函数调用直接用函数名即可。
Linux shell 基础的更多相关文章
- Linux Shell基础(下)
Linux Shell基础(下) 目录 一.shell特殊符号cut命令 二.cut.sort.wc.uniq命令 三.tee.tr.split命令 四.简易审计系统 五.fork, exec, so ...
- Linux shell基础知识(上)
Linux shell基础知识(上) 目录 一.shell介绍 二.命令历史 三.命令补全和别名 四.通配符 五.输入输出重定向 六.管道符和作业控制 七.shell变量 八.环境变量配置文件 九.b ...
- linux shell 基础 使用日志与心得
linux shell 基础 使用日志与心得 1.#!/bin/bash 第一行就出现#!/bin/bash是指此脚本使用/bin/bash来解释执行.其中,#!是一个特殊的表示符,其后,跟着解释此脚 ...
- Linux Shell 基础知识(一)
1. 本文知识结构 2. shell 基础知识 2.1 shell 简单介绍 GNU bash shell 能提供对 Linux 系统的交互式访问,一般来说,使用快捷键 Ctrl + Alt + ...
- Linux shell基础
shell是核心程序kernel之外的指令解析器,是一个程序,同事是一种命令语言和程序设计语言 --shell是命令解析器,用户输入命令,它去解析. shell类型 ash,bash,ksh,csh, ...
- linux shell基础语法
1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码 ...
- Linux Shell基础 环境变量配置文件
source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...
- Linux Shell基础 位置参数变量、预定义变量
位置参数变量 在 Linux 的命令行中,当一条命令或脚本执行时,后面可以跟多个参数,我们使用位置参数变量来表示这些参数.其中,$0 代表命令行本身,$1 代表第 1 个参数,$2 代表第 2 个参数 ...
- Linux Shell基础 环境变量
环境变量 环境变量和用户自定义变量最主要的区别在于,环境变量是全局变量,而用户自定义变量是局部变量.用户自定义变量只在当前的 Shell 中生效,而环境变量会在当前 Shell 和这个 Shell 的 ...
- Linux Shell基础 Shell基本知识
概述 在 Linux 的脚本中,只要是基于 Bash语法写的Shell脚本第一行必须是"#!/bin/bash",用来声明此文件是一个脚本. 运行方式 Shell 脚本的运行主要有 ...
随机推荐
- service不死之身
为了应用常驻后台,避免被第三方杀掉的方法 1)Service设置成START-STICKY kill 后会被重启(等待5秒左右),重传Intent,保持与重启前一样 2)通过startForegrou ...
- 计蒜客 取数游戏 博弈+dp
题目链接 取数游戏 思路:dp(x, y)表示先手在区间[x, y]能取得的最大分数.当先手取完,就轮到后手去,后手一定会选择当前能令他得到最大分数的策略,其实当先手在[x, y]区间两端取走一个数, ...
- CodeForces-747C
直接模拟就行,用一个数组保存某个server上次是在哪个task里面即可很方便判断它现在是否可用. AC代码: #include<cstdio> #include<cstring&g ...
- 编码问题 php字符编码转换类
各种平台和软件打开显示的编码问题,需要使用不同的编码,根据我们不同的需求. php 字符编码转换类,支持ANSI.Unicode.Unicode big endian.UTF-8.UTF-8+Bom ...
- Luogu P1747 好奇怪的游戏
题目背景 <爱与愁的故事第三弹·shopping>娱乐章. 调调口味来道水题. 题目描述 爱与愁大神坐在公交车上无聊,于是玩起了手机.一款奇怪的游戏进入了爱与愁大神的眼帘:***(游戏名被 ...
- 常用u-boot命令详解(全)
U-boot发展到现在,他的命令行模式已经非常接近Linux下的shell了,命令行模式模式下支持"Tab"键的命令补全和命令的历史记录功能.而且如果你输入的命令的前几个字符和别的 ...
- 【转载】Ubuntu环境下安装QT(转)
Ubuntu 安装 Qt 开发环境 简单实现是本文要介绍的内容,内容很短,取其精华,详细介绍Qt 类库的说明,先来看内容. 一.Ubuntu下安装Qt $ sudo apt-get install q ...
- Android WebView编程的那些坑(一)
最大的坑是ROM不同,webkit不同,差异性很大.再加上google的坑,真是坑上加坑.比如js注入问题,比如client回调接口时序问题, 比如内存回收问题,etc 1.内存泄漏问题,尤其注意An ...
- web开发性能优化---代码优化篇
1.合理使用缓存使用 提高性能最好最快的办法当然是通过缓存来改善,对于任何一个web开发者都应该善用缓存.Asp.net下的缓存机制十分强大,用好缓存机制可以让我们极大的改善web应用的性能. 1.页 ...
- 网络协议笔记-网络层-ARP协议
[2-地址解析协议ARP] [2.1-基本概念] 地址解析协议ARP的作用是根据主机的IP地址,找出该主机的硬件地址. [2.2-为什么要使用ARP] 在数据传输过程中,网络层使用的IP地址,但是在实 ...