Shell入门知识
Shell 简介
Shell作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。
常常作为批处理命令来使用,用来提高生产效率!
入门
下面是Shell的一段简单入门程序,我们在Linux上面使用vi test.sh
然后将下面的代码打进去,运行sh test.sh
即可
#!/bin/bash
echo "Hello World !"
上面这段程序是输出HelloWorld,其中#!/bin/bash
指定编译器,必须在脚本的第一行,echo
输出信息,这里为输出Hello World
如何运行这段程序呢, 第一步首先进入到该脚本所在的目录,比如cd /root/shelltest ,运行命令sh test.sh
这样就可以进行输入了。
程序中的变量
定义全局变量
全局变量一直存在,不会因为切换shell终端或者退出登录而消失,全局变量需要在 /root/.bush_profile 、/etc/bashrc、/etc/profile、/etc/profile.d文件中设置,设置的格式为export name=value
在/etc/profile中定义完成后,需要重新加载配置文件 source /etc/profile
其中在/etc/profile.d设置shell脚本可以在启动shelle客户端的时候就执行这个脚本,这个文件夹中存储的都为脚本。
创建脚本内容如下
则新打开客户端的时候则会执行这个脚本,输出对应的内容。
定义局部变量, 局部变量在退出Shell客户端时会失效
单引号双引号的区别
单引号:原样输出
双引号:如果里面有变量,会输出变量
没有引号:输出变量
传递的参数
可以在调用脚本的时候给脚本传递参数,脚本内使用$1 $2 ...... 接受传递的参数,当参数超过9的时候,需要用花括号括起来 ${10}
特殊的调用参数:
$0:返回Shell文件名称
$$:当前脚本的PID
$#:传递的所有参数
$@:程序中的所有参数,这是将参数传递给其他程序的最佳方式。
$! :执行的上一个命令的PID
$?:上一次指令的返回值
$_:此命令前面的最后一个参数
$* :获取所有的参数
不同脚本之间访问变量
使用sh
命令启动的脚本,则在脚本结束其内部的属性都会消失,其他的脚本不能访问其内部的属性。
使用source
命令启动脚本,则在脚本结束后其属性不会失效,同时其他的脚本也能访问到。
取消变量
使用unset
可以取消变量,这个变量包括环境变量和局部变量
数组
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似),数组下标从0开始。
定义数组
array=(value1 value2 value3)
array_name[0]=value0
读取数组
${array_name[index]}
获取数组中全部的元素
${my_array[@]}
获取数组的长度
${#my_array[*]}
流程控制
if
如果else语句中没有执行语句,不可以写
if condition
then
command1
command2
...
commandN
fi
------------------
if condition
then
command1
command2
...
commandN
else
command
fi
------------
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
for
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
while
while condition
do
command
done
until
类似do-while循环,在最后判断条件,最少执行一次
until condition
do
command
done
case
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
函数
demoFun(){ // 定义
echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun // 调用,如果需要传递参数直接在后面跟就好 demoFun 1 2 3
echo "-----函数执行完毕-----"
运算符
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
expr 2 + 2
使用方法 , 需要注意的为1.表达式和运算符之间要有空格 2. 需要用``引起来
关系运算符
使用方法:
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
布尔运算符
使用方法
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
逻辑运算符
字符串运算符
文件测试运算符
Shell入门知识的更多相关文章
- Python基础入门知识
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Linux shell入门基础(六)
六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...
- Linux shell入门基础(一)
Linux shell入门基础(一): 01.增加删除用户: #useradd byf userdel byf(主目录未删除) userdel -r byf 该用户的属性:usermod 用 ...
- [置顶] Mysql存储过程入门知识
Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...
- 移动H5开发入门知识,CSS的单位汇总与用法
说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...
- H5移动端开发入门知识以及CSS的单位汇总与用法
说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...
- Java web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- Java基础入门知识
Java编程入门知识 知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...
- zabbix入门知识
zabbix入门知识 zabbix中文手册 https://www.zabbix.com/documentation/3.4/manual/ 1.zabbix介绍 Zabbix 是一个企业级的分布式开 ...
随机推荐
- css左右布局的几种实现方式和优缺点
记录一下左右布局的实现方式,实现的具体效果是,左侧固定宽度,高度适中等于父元素的高度,父元素的高度由右侧内容决定: html代码如下: <div class="parent" ...
- 《effective Go》读后记录
一个在线的Go编译器 如果还没来得及安装Go环境,想体验一下Go语言,可以在Go在线编译器 上运行Go程序. 格式化 让所有人都遵循一样的编码风格是一种理想,现在Go语言通过gofmt程序,让机器来处 ...
- Java的基本程序设计结构【2】
注释 与大多数程序设计语言一样,Java 中的注释也不会出现在可执行程序中.因此,可以在源程序中根据需要添加任意多的注释,而不必担心可执行代码会膨胀.在Java 中,有三种书写注释的方式. 最常用的方 ...
- 移植u-boot-2012.04.01到JZ2440
开发环境:Ubuntu 12.04 开发板:JZ2440 256M NandFlash 64M SDRAM 交叉编译器:arm-linux-gcc-4.3.2 u-boot:u-boot-2012 ...
- 设计模式学习之“观察者模式” [C#]
<深入浅出设计模式>学习笔记第二章 需求: 开发一套气象监测应用,如图: 气象站,目前有三种装置,温度.湿度和气压感应装置. WeatherData对象追踪气象站的数据,并更新到布告板,布 ...
- 记一次Java的内存泄露分析
当前环境 jdk == 1.8 httpasyncclient == 4.1.3 代码地址 git 地址:https://github.com/jasonGeng88/java-network-pro ...
- JS表单提交的几种方式
第一种方式 : 表单提交,在 form 标签中增加 onsubmit 事件来判断表单是否提交成功 <script type="text/javascript"> fun ...
- HDU1068 二分匹配 独立集
前边和后边性别不同!!!不然NP了 Girls and Boys Problem Description the second year of the university somebody star ...
- 易语言关于使用CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试
易语言关于使用 CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试 测试模块情况: |-精易模块5.8 |-鱼刺类Http |-libCURL +++ ...
- Bootstrap表格样式(附源码文件)--Bootstrap
1.表格默认样式 <h4>表格默认样式</h4><table><!--默认样式--> <tr><th>序号</th> ...