Linux下Shell编程
Linux的shell编程
1、什么是shell?
当一个用户登录Linux系统之后,系统初始化程序init就为每个用户执行一个称为shell(外壳)的程序。
shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便执行程序的界面系统级程序,用户能够用shell来启动、挂起、停止甚至是编写一些程序。一般的Linux系统都将bash作为默认的shell。
2、几种流行的shell
眼下流行的shell有ash、bash、ksh、csh、zsh等,能够用以下的命令来查看shell的类型:
echo $SHELL
SHELL是一个环境变量,它记录用户所使用的shell类型。
3、假设要运行该脚本,还必须使其可运行。
chmod +x filename
然后。您能够通过输入: ./filename 来运行您的脚本。
4、第一个shell程序
$vi firstscript.sh
echo “You are welcome to use base.”
echo “Current work directory is $PWD.”
echo “You are $LOGNAME.”
添加运行权限
$chmod +x firstscript.sh
開始执行程序:
$./firstscript.sh
5、简单的运算
$[expression]
比如:
var1=2
var2=$[$var1*10+1]
echo $var2
返回值为21。
-r文件名称:假设文件存在且可读则为真
-w文件名称:假设文件存在且可写则为真
-x文件名称:假设文件存在且可运行则为真
-s文件名称:假设文件存在且至少有一个字符则为真
-d文件名称:假设文件存在且为文件夹则为真
-f文件名称:假设文件存在且为普通文件则为真
-e文件名称:假设文件存在则为真
-c文件名称:假设文件存在且为字符型特殊文件则为真
-b文件名称:假设文件存在且为块特殊文件则为真
-a 逻辑与
-o 逻辑或
! 逻辑否
String_operator 能够为:
=:两个字符串相等
!=:两个字符串不等
-z:空串
-n:非空串
-eq:数值相等
-ne:数值不相等
-gt:大于
-lt:小于
-le:小于等于
-ge:大于等于
6、命令格式:read 变量名列表
功能:从键盘或文件输入数据,赋值给变量。shell用空格作为变量之间的切割符。
按回车键或者CTRL+D结束输入。
当read从文件里读取数据时候是依照行读取的,即一次读取一行。假设没有碰到回车符,则一直读到文件末尾。
读取数据的方式和从键盘输入时同样。
$read name sex age
Yangailin male 25
$echo $name
Yangailin
$echo $sex
male
$echo $age
25
$read name sex
Yangailin male 25
$echo $name
Yangailin
$echo $sex
male 25
$read name sex
Yangailin male 25
$echo $name
Yangailin
$echo $sex
male 25
7、管道pipe
能够通过管道将一个命令的输出传递给还有一个命令作为输入。管道用竖杠|表示。它的语法格式例如以下:
命令1 | 命令2
8、cat 命令
cat 命令能够用来显示文件内容,创建文件。还能够用来显示控制符号(用-v选项)。
cat命令一下子显示整个完整的文件。
假设希望每次显示一页,能够使用more命令
$cat filename1 filename2 > filename3
#该命令把两个文件连成一个文件filename3
9、shell高级编程
shell 同意用户在不同的命令之间。放上特殊的排列字符。用户假设须要在一行中给出多个命令需使用分号“;”。
command1 ; command2
command1 && command2
上面的命令表示仅仅有当 command1 正确执行完成后。才执行 command2 。
command1 || command2
上面的命令表示仅仅有当 command1 执行失败才会执行 command2 。
在shell以下。一个新产生的进程能够通过用命令后面的符号“;”和“&”来分别曾经台和后台的方式来运行,语法例如以下:
command; 产生一个前台的进程,下一个命令须等该命令执行结束后才干输入。
command & 产生一个后台的进程,此进程在后台执行的同一时候。能够输入其它的命令。
在shell中有两种命令分组的方法:“()”和“{}”,当用户在运行某个命令时不想让命令运行时对状态集合(如位置參数、环境变量、当前工作文件夹等)的改变影响到以下语句的运行时,就应该把这些命令放在圆括弧中
{}用于将顺序运行的命令的输出结果用于还有一个命令的输入(管道方式)
shell程序的调试主要是利用bash命令解释程序的选择项。
调用bash的形式是:
bash -选择项 shell程序文件名称
-e:假设一个命令失败就马上退出
-n:读入命令可是不运行它们
-u:置换时把未设置的变量看作出错
-v:当读入shell输入行时把它们显示出来
-x:运行命令时把命令和它们的參数显示出来
调试shell程序的主要方法是利用shell命令解释程序的“-v”或“-x”选项来跟踪程序的运行。“-v”选择项使shell在运行程序的过程中,把它读入的每个命令行都显示出来。而“-x”选择项使shell在运行程序的过程中把它运行的每个命令在行首用一个“+”加上命令名显示出来。并把每个变量和该变量所取的值也显示出来。
Linux下Shell编程的更多相关文章
- Linux 下shell 编程学习脚手架
linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...
- linux下shell编程示例-获取进程id
今天初步学习了一下linux下的shell编程,简单记录一下测试用例 1.编辑shell脚本文件如下: #!/bin/bashecho "hello bash linux"echo ...
- Linux下shell编程实例
1. 推断一文件是不是块或字符设备文件.假设是将其复制到 /dev 文件夹下 read -p "input a file:" filename if [ -b $filename ...
- linux 下Shell编程(四)
for循环应用实例 for 循环可以对一个记录集中地数据依次集中地数据依次进行处理. #!/bin/bash #4.13.sh for clear #看下图区别 for((i=1:i<1 ...
- linux 下 Shell编程(三)
if语句应用实例 if语句可以在程序中实现各种逻辑判断. 用if语句判断并显示文件的信息 可以用test命令和相关的参数来判断文件的属性,然后根据判断结果输出文件的信息. #!/bin/bash #4 ...
- 06 Linux下Shell介绍
一.概述 每个人在成功登陆Linux后,系统会出现不同的提示符号,例如$,~,#等,然后你就可以开始输入需要的命令.若命令正确,系统就会依据命令的要求来执行,直到注销系统为止,在登陆到注销期间,输入的 ...
- .Neter玩转Linux系列之四:Linux下shell介绍以及TCP、IP基础
基础篇 .Neter玩转Linux系列之一:初识Linux .Neter玩转Linux系列之二:Linux下的文件目录及文件目录的权限 .Neter玩转Linux系列之三:Linux下的分区讲解 .N ...
- linux 下shell 编写脚本
linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...
- 【Hadoop离线基础总结】linux的shell编程
linux的shell编程 基本了解 概述 Shell是一个用C语言编写的程序,通过shell用户可以访问操作系统内核服务,它类似于DOS下的command和后来的cmd.exe.Shell既是一种命 ...
随机推荐
- Python 设计模式--策略模式
策略模式(Strategy Pattern) 策略模式是一种与行为相关的设计模式,允许你在运行时根据指定的上下文确定程序的动作.可以在两个类中封装不同的算法,并且在程序运行时确定到底执行哪中策略. 特 ...
- P1400 塔
题目描述 有N(2<=N<=600000)块砖,要搭一个N层的塔,要求:如果砖A在砖B上面,那么A不能比B的长度+D要长.问有几种方法,输出 答案 mod 1000000009的值. 输入 ...
- 联想 S5【K520】免解锁BL 免rec 保留数据 Magisk Xposed 救砖 ROOT ZUI 3.7.490
>>>重点介绍<<< 第一:本刷机包可卡刷可线刷,刷机包比较大的原因是采用同时兼容卡刷和线刷的格式,所以比较大第二:[卡刷方法]卡刷不要解压刷机包,直接传入手机后用 ...
- servU服务器连接不上问题的解决
在服务器上安装了servU64位版,建立了用户,设置了防火墙,正常启动. 但在客户端发出FTP://服务器IP 命令后,弹出输入用户名和密码的对话框,输入正确的用户名和密码后,却始终连接不上. ftp ...
- LockDemo 锁对象
class Resource { private boolean flag = false; private String name; private int count; //资源锁 Lock lo ...
- PHP几个常用的概率算法
算法一 /** * 全概率计算 * * @param array $p array('a'=>0.5,'b'=>0.2,'c'=>0.4) * @return string 返回上面 ...
- SpringBoot+Mybatis 自动创建数据表(适用mysql)
Mybatis用了快两年了,在我手上的发展史大概是这样的 第一个阶段 利用Mybatis-Generator自动生成实体类.DAO接口和Mapping映射文件.那时候觉得这个特别好用,大概的过程是这样 ...
- 计算机网络(二)--HTTP详解
Web相关内容都是存储在Web服务器上,Web服务器上使用的是http协议,因此也被成为http服务器.http的client.server构成了万维网的 基本组件 一.资源 1.URI: 统一资源标 ...
- 04Servlet的生命周期
Servlet的生命周期 Servlet运行在Servlet容器中,其生命周期由容器来管理.Servlet的生命周期通过javax.servlet.Servlet接口中的init().service( ...
- nginx+tomcat+memcache
tomcat1和tomcat2都需要安装以下配置[root@tomcat-1 ~]# yum -y install gcc openssl-devel pcre-devel zlib-devel[ro ...