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编程,布布扣,bubuko.com

时间: 2024-08-05 12:56:04

Linux下Shell编程的相关文章

Linux下shell编程实例

1. 判断一文件是不是块或字符设备文件,如果是将其拷贝到 /dev 目录下 read -p "input a file:" filename if [ -b $filename -o -c $filename ] then cp $filename /dev/ fi 2.编写一个脚本,进行简单的减法运算,要求提示输入变量 #!/bin/bash read -p "input a number:" num1 read -p "input another nu

linux下shell编程示例-获取进程id

今天初步学习了一下linux下的shell编程,简单记录一下测试用例 1.编辑shell脚本文件如下: #!/bin/bashecho "hello bash linux"echo "第0个参数:$0"echo "第一个参数:$1"echo "当前子shell进程:$$" #pidarr=`ps x | awk '{print $1}'`pidarr=$(ps x | awk '{print $1}')echo $pidadd

linux下shell编程梳理

经常看一些有关linux的书籍仍感觉不能全面掌握这些知识其实也不可能全面掌握只要能达到熟练地使用就可以了毕竟做研发就是能快速做出能卖钱的产品民营企业为王的年代. 这些日子做产品感觉对shell部分基础有些不大熟练在此总结一些要点以期对这个shell有新的认识也做些笔记和大家分享.   一 shell的基础 Shell 是一个用C语言编写的程序它是用户使用Linux的桥梁.Shell既是一种命令语言又是一种程序设计语言. Shell 是指一种应用程序这个应用程序提供了一个界面用户通过这个界面访问操

linux下shell编程基础知识

1.history    记录历史命令: 预设记录1000条命令,存储在用户家目录 .bash_history 文件中: !!     执行上一条命令 !n    n为数字,history里面显示的指令数字 !cat    执行最近一次以cat开头的命令 !$    上一条命令的最后一个参数 man builtin    可以查询系统内置的所有命令: 2.指令和文件名补全 Tab键    连续按2次列出所有的指令或文件名: 3.别名alias 自定义别名,把很长的经常使用的命令别名一个简单的命令

linux下Shell编程--标准的守护进程的启动脚本

一个标准的守护进程的启动脚本: #! /bin/sh WHOAMI=`whoami` PID=`ps -u $WHOAMI | gerp mydaemond | awk '{print $1}'` if (test "$1" = "") then echo "mydaemond [start][stop][version]" exit 0 fi if ( test "$1" = "status") then

Linux下Shell介绍

? 一.概述 每个人在成功登陆Linux后,系统会出现不同的提示符号,例如$,~,#等,然后你就可以开始输入需要的命令.若命令正确,系统就会依据命令的要求来执行,直到注销系统为止,在登陆到注销期间,输入的每个命令都会解译及执行,而负责的机制就是shell ? 二.Linux下Shell的执行过程 Shell可以理解为解析Linux命令的功能块,相当于Windows下的bat批处理文件,例如:在Windows桌面下新建del.bat文件,打开并编辑命令del E:\test.txt,在E盘目录下新

linux 下shell 编写脚本

linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个脚本,给定一个正整数,反序输出这个这个数. 例如:程序输入123,那么应该输出321. 3.Linux命令+shell编程:编写一个程序,实现定时文件备份的功能. 要求: 1.备份某个目录下的所有文件 2.对备份文件进行压缩 3.生成合理的日志文件 4.Shell下的gui(libnotify-bi

Linux的Shell编程——认识BATH这个Shell

Linux的Shell编程——认识BATH这个Shell 摘要:本文主要了解了Linux系统中的Shell,以及什么是BATH. 什么是Shell Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至编写一些程序. Shell处在内核与外层应用程序之间,起着协调用户与系统的一致性.在用户与系统之间进行交互的作用.Shell接收用户输入的命令,并把用户的命令从类似abed的ASCII码解释为类似0101的机

linux下shell脚本执行方法及exec和source命令

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息. bash shell的命令分为两类:外部命令和内部命令.外部命令是通过系统调用或独立的程序实现的,如sed.awk等等.内部命令是由特殊的文件格式(.def)所实现,如cd.history.exec等等. 在说明exe和source的区别之前,先说明一下fork的概念. fork是linux的系统调用,用来创建子进程(child