Linux Shell(初识)
什么是Shell:Shell是一个命令解释器。
Linux下支持shell的种类:
1、 Bourne Shell(简称sh)
2、C Shell(简称csh)
3、Korn Shell(简称ksh)
4、Bourne Again Shell(简称bash)
Bourne Shell有4种变量:
1、 用户自定义变量:
格式:变量名=值(等号两边不能有空格,亲测)
引用变量:$变量名
举例:VAR=”Hello Shell”
Echo $VAR
注意:当变量名与其他文字混淆时,使用${变量名}格式引用变量。
2、 位置参数即命令行参数:
由系统提供的参数称为位置参数,如:$0表示程序的名字,$1表示传递给程序的第一个参数,以此类推。
3、 预定义变量
预定义变量在Shell一开始就定义了的变量,有所不同的是,用户只能根据Shell的定义来使用这些变量,而不能重定义它。
$#:包含命令行参数个数
$@:包含所有命令行参数:“$1,$2...$9”
$?:包含前一个命令的退出状态,正常退出返回0,反之为非0值。
$*:包含所有命令行参数:“$1,$2...$9”
$$:包含正在执行进程ID号
4、 环境变量
echo:显示指定环境变量
export:设置新的环境变量
env:显示所有环境变量
set:显示所有本地定义的Shell变量
unset:清除环境变量
示例:设置一个新的环境变量,设置export Hello=”Hello!”,显示echo $Hello。
Shell程序和语句
Shell语句包括3类:说明性语句、功能性语句和结构性语句。
说明性语句:以#开始到改行结束,不被解释执行。
功能性语句:任意的shell命令、用户程序或其他shell程序。
结构性语句:条件测试语句、多路分支语句、循环语句、循环控制语句等。
一、功能性语句:
1、 键盘读入变量值:read 变量,如:
#!/bin/bash
echo please enter a string
read STRING
echo you enter string is $STRING
2、 算术运算命令
算术运算命令expr主要用于进行简单的整数运算,包括+(加)、-(减)、\*(乘)、/(整除)、%(求模)等操作。
#!/bin/bash
echo input two numbers
read a b
mul=`expr $a \* $b`
echo $a \* $b = $mul
注意:表达式z=`expr $x + $y`中的符号”`”为键盘左上角的反引号键。
3、 test命令
test语句可以测试3种对象:字符串、整数、文件属性。
a) 字符串测试:
s1 = s2 测试两个字符串的内容是否完全一样
s1 != s2 测试两个字符串的内容是否有差异
-z s1 测试s1字符串长度是否为0
-n s1 测试s1字符串长度是否不为0
测试字符串是否相等:
#!/bin/bash
read s1 s2
[ $s1 = $s2 ]
echo $?
注意:“[”后面和“]”前面及等号“=”的前后都应有一个空格。[]同为test命令。
测试字符串长度:
#!/bin/bash
read ss
[ -n $ss ]
echo $?
注意:1为长度小于等于零,0为长度大于零。
a – eq b 测试a与b是否相等
a – ne b测试a与b是否不相等
a – gt b 测试a是否大于b
a – ge b 测试a是否大于等于b
a – lt b 测试a是否小于b
a – le b 测试a是否小于等于b
#!/bin/bash
read x y
if test $x -eq $y
then
echo $x=$y
else
echo $x!=$y
fi
文件测试:
-d name 测试name是否为一个目录
-f name 测试name是否为普通文件
-L name 测试name是否为符号链接
#!/bin/bash
[ -d /home/azhe ]
echo $?
结果为1目录不存在,0表示目录存在。
4、 tput命令
tput命令主要用于设置终端工作模式:
bold 粗体字显示
rev 反白显示
sgr0 关闭所有属性
使用:tput rev
二、结构性语句
1、 条件测试语句
If 表达式
then 命令表
fi
另一种形式:
if 表达式
then 命令表1
else 命令表2
fi
2、 多路分支语句
多路分支语句case用于多重条件测试。
case 字符串变量 in #case语句只能检测字符串变量
模式1) #各模式中可用文件名元字符,以右括号结束
命令表1
;; #命令表以单独的双分号行结束,退出case语句
模式2)
命令表2
;;
模式n) #模式n常写为字符*,表示所有其他模式
命令表n
;; #最后一个双分号可以省略
Esac
实例:
#!/bin/bash
if [ $# -eq 0 ]
then
echo no argument
exit
fi
case $1 in
file1)
echo file1
;;
file2)
echo file2
;;
*)
echo must select file1 or file2
;;
Esac
3、 循环语句
a) for语句
for 变量名 in 单词表
do
命令表
done
变量依次取单词表中的各个单词,每取一次单词,就执行一次循环体中的命令。循环次数由单词表中的单词数确定。命令表中的命令可以是一条,也可以是由分号或换行符分开的多条。如果单词表中是命令上的所有位置参数时,可以在for语句中省略“in 单词表”部分。
实例:复制当前目录下所有的文件到/home/backup目录下。
#!/bin/bash
if [ ! -d /home/backup ]
then
mkdir /home/backup
fi
flist=`ls`
for file in $flist
do
if [ $# = 1 ]
then
if [ $1 = $file]
then
echo "$file found";exit
fi
else
cp $file /home/backup
echo "$file copied"
fi
done
echo ***backup completed***
b) while循环语句
while 命令或表达式
do
命令表
done
4、 循环控制语句
Shell脚本中,循环控制语句有break和continue。break n表示跳出n层;continue语句表示马上转到最近一层循环语句的下一轮循环上,continue n则转到最近n层循环语句的下一轮循环上。
Shell函数
函数定义格式:
方式一:
function_name ( )
{
command1
...
commandn
}
方式二:
Function function_name ( )
{
command1
...
commandn
}
函数调用格式:
方式一:
value_name=`function_name [arg1 arg2 ...]`
方式二:
function_name [arg1 arg2 ...]
echo $?
实例:编写一个函数add求两个数的和。
#!/bin/bash
add()
{
a=$1
b=$2
z=`expr $a + $b`
return $z
}
add $1 $2
echo $?
Shell脚本调用
在shell脚本的执行过程中,支持调用另一个shell脚本,调用格式为:脚本名
实例:在test1.sh调用test2.sh。
#test1.sh脚本
#!/bin/bash
echo “The main name is $0”
./test2.sh
echo “The first string is $1”
#test2.sh脚本
#!/bin/bash
echo “How are you $USER?”
Linux Shell(初识)的更多相关文章
- 初识Linux shell
目录 初识Linux shell Linux 深入探究Linux内核 系统内存管理 交换空间 页面 换出 软件程序管理 Linux中的进程 Linux系统的运行级 硬件设备管理 插入设备驱动代码的方法 ...
- Linux命令行–初识Linux shell
shell及脚本简介 GNU/Linux shell 是个交互工具,它为用户提供了启动程序.管理文件系统上的文件以及管理运行在Linux系统上的进程的途径 . shell的核心是命令行提示符 它是s ...
- linux shell 脚本攻略学习20--awk命令入门详解
awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母. 作用:处理文本文件. awk ...
- Linux入门——初识Linux
Linux入门——初识Linux 摘要:本文主要说明了Linux是什么,Linux发展历史,以及同Linux系统有关的一些基本知识. 简介 操作系统 Linux系统同Windows系统.Mac系统一样 ...
- 我们一起来学Shell - 初识shell
文章目录 Shell 的分类 `bash` `csh` `ksh` `tcsh` `sh` `nologin` `zsh` Shell 能做什么 bash 环境变量文件 `/etc/profile` ...
- linux shell 中的sleep命令
开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- Linux Shell 流程控制语句
* 本文主要介绍一些Linux Shell 常用的流程控制语句* 1. if 条件语句:if-then/if-elif-fi/if- else-fi if [条件判断逻辑1];then command ...
随机推荐
- ZOJ3549 Little Keng(快速幂)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Little Keng Time Limit: 2 Seconds Me ...
- memcached全面剖析
memcached介绍如今,越来越多的Web应用程序开始使用memcached这个高速的缓存服务器软件.然而,memcached的基础知识远远未能像其他Web技术那样普及,memcached在国内的大 ...
- shopnc B2B2C商城 Nginx下开启伪静态
B2B2C商城 Nginx下开启伪静态,伪静态开启后,对系统的SEO极为有利,可以最大限度让商城页面被搜索引擎抓取,但在实际安装中,很多客户在这块都会遇到各种各样的问题. 1. 编辑商城配置文件(da ...
- JS 闭包问题
一.什么是闭包?“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 相信很少有人能直接看懂这句话,因为他描述的太 ...
- jquery serialize的使用
serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. <!DOCTYPE html> <html lang="en"> <he ...
- 通过JCONSOLE监控TOMCAT的JVM使用情况
这个也是要学入一下,JVMr 虚拟机原理不可少. 参考配置URL“: http://blog.163.com/kangle0925@126/blog/static/277581982011527723 ...
- usaco5.5-Picture
离散化计算重叠矩形的周长. 称平行于x轴的边为横边,我们以横边为例,某一矩形中y坐标比较小的横边我们称为始边,另一边我们称为终边.用一条扫描线从下往上扫描,当扫到一条始边的时候,如果这条始边的正下方出 ...
- 3D objects key rendering steps
Key steps of Rendering objects: 1 Create objects’ meshes, which we can use C++’s vector container to ...
- 【POJ2777】Count Color(线段树)
以下是题目大意: 有水平方向上很多块板子拼成的墙,一开始每一块都被涂成了颜色1,有C和P两个操作,代表的意思是:C X Y Z —— 从X到Y将板子涂成颜色ZP X Y —— 查询X到Y的板子共 ...
- One手动玩转
<preface p2 by Ruiy,我就在开头简单奇葩两句!> 老周被查,涉及到政治问题,我先就不聊了,但Ruiy叹那,都查到七*务了,土党唱哪一出! 能基本玩转OpenNebula都 ...