shell编程

在Linux中,Shell不但能与用户进行逐个命令交互执行,也可以通过脚本语言进行编程。

第一个shell程序
1、写shell程序
用vim打开并建立一个shell文件,开头固定 #!/bin/bash,表示用的是 bash 语法,# 后面为注释,date 显示日期,echo 打印字符串

[zcy@zcy ~]$ mkdir myprogram
[zcy@zcy ~]$ cd myprogram/
[zcy@zcy myprogram]$ vim first.sh
#!/bin/bash
#This is my first sh
date
echo "hello world!"
[zcy@zcy myprogram]$ echo $SHELL
/bin/bash
//默认的shell为 bash
[zcy@zcy myprogram]$ cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
//查看系统内置了那几种shell

2、运行shell程序
第一种 直接运行
#/usr/program/first

使用这种方法时,需首先设置该文件的执行权限。
如果执行当前目录下的脚本文件,通常也应该使用一个点表示当前目录,如执行当前目录下的脚本文件test,可使用命令:# ./test

[zcy@zcy myprogram]$ chmod a+x first.sh
[zcy@zcy myprogram]$ ll first.sh
-rwxrwxr-x. 1 zcy zcy 58 6月   6 19:43 first.sh
[zcy@zcy myprogram]$ ./first.sh
2020年 06月 06日 星期六 19:43:42 CST
hello world!

第二种 利用shell程序运行
#bash /usr/program/first

[zcy@zcy myprogram]$ sh -x first.sh
+ date
2020年 06月 06日 星期六 19:44:07 CST
+ echo 'hello world!'
hello world!
[zcy@zcy myprogram]$ sh first.sh
2020年 06月 06日 星期六 19:44:46 CST
hello world!

shell语法介绍

(1)使用变量

在Shell程序中所有变量保存的值都是字符串。

在Linux的Shell中,可以使用以下几种变量:

1.环境变量:是指与Shell执行的环境相关的一些变量。Shell环境变量在Shell启动时,就已定义好,如PATH,HOME,MAIL等,这些变量用户还可以重新定义。可使用set命令查看系统中各环境变量的值。

2.用户自定义变量: 变量名=变量值

3.预定义变量(系统变量):用户不能修改,只能引用这些变量。所有的预定义变量都是由“$”符号与另一个符号组成的,常用的Shell预定义变量有以下几个:

$#:位置参数的数量

$*:所有位置参数的内容

$?:命令执行后返回的状态

$$:当前进程的进程号

$!:后台运行的最后一个进程号

$0:当前执行的进程名

#!/bin/bash
echo "the letter you like is:$1 $2 $3" #输出位置变量的参数
echo "本脚本名:" $0
echo "本脚本中参数的个数:" $#
echo "上一条命令的返回值:" $?
cd /hom
#故意输错
echo #?
#上一条命令执行失败 返回非0
cd /home
echo #?
echo "pid;" $$

(2)输入/输出内部命令

1.输出命令:echo

2.输入命令:read

举例3:编写一个Shell程序contact,接受用户输入的用户名和电话号码,将这些信息显示在终端上,并保存到contact.txt文件vi中。

#!/bin/bash
read -p "your name and phone:" NAME PHONE
echo $NAME,$PHONE
echo $NAME,$PHONE>contact.txt

shell调试

调试跟踪

1.-n选项

bash命令的“-n”选项使Shell不执行脚本,仅检查脚本中的语法问题。

2.-v选项

bash命令的“-v”选项使Shell在执行程序过程中,将读入的每一个命令行都原样输出到终端。

3.-x选项

bash命令的“-x”选项使Shell在执行程序过程中,把执行的每一个命令在行首用一个“+”号加上对应的命令显示在终端上,并把每一个变量和该变量的值也显示出来。使用该选项更方便跟踪程序的执行过程。

实例
1.增加用户账户

举例20:编写一个Shell程序addaccount.sh,在系统中增加四个账户,同时设定他们的初始密码为123456,主组群为wl15。

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200606230902554.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3pjeV9pbnNwaXJl,size_16,color_FFFFFF,t_70)

2.统计子目录和文件数量

举例21:

编写一个Shell程序count.sh,统计当前目录中子目录以及文件的数量。

  1. 九九乘法表

举例22:编写乘法口诀cfkj.sh,打印出九九乘法表。

shell 入门 Linux 学习相关推荐

  1. linux shell概述,Linux学习 -- Shell基础 -- 概述

    Shell是什么? 命令解释器 编程语言 Linux支持的Shell类型 cat /etc/shells 主要学习 bash 脚本执行方式 echo echo -e 单引号 -- 原始字符串  双引号 ...

  2. 小白入门Linux学习日志

    这里写自定义目录标题 系列文章目录 前言 一.pandas是什么? 二.使用步骤 1.引入库 2.读入数据# 系列文章目录 前言 一.pandas是什么? 二.使用步骤 1.引入库 2.读入数据 总结 ...

  3. linux运维基础进阶和shell入门,Linux运维工程师从基础到进阶:Shell变量知识梳理...

    原标题:Linux运维工程师从基础到进阶:Shell变量知识梳理 Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言,涵盖的知识点多且杂 ...

  4. 14门教程带你全面入门Linux

    Linux有很多优点:安全.自主.开源--,也正是这些优点使得很多人都在学Linux. 虽说网上有大把的Linux课程资源,但是对很多小白来说网上的课程资源比较零散并不适合新手学习. 正因为此,总结了 ...

  5. 视频教程-Linux零基础入门-Linux

    Linux零基础入门 毕业于解放军特种作战学院 曾就职某军区司令部,复原后从事IT行业,,具有独特的授课风格:思路清晰,语言简洁,讲解激情,幽默风趣,感染力强 李文瀚 ¥68.00 立即订阅 扫码下载 ...

  6. Linux学习入门: shell脚本常用命令汇总

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 Linux学习最初就是要掌握shell脚本的基本命令语句,这个也是我们操作Linux操作系统的关键步骤,但是Linux的shel ...

  7. 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

    转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...

  8. Linux入门怎么学?262页linux学习笔记,零基础也能轻松入门

    #种一棵树最好的时间是十年前,其次是现在 很多程序员一开始在学习上找不到方向,但我想在渡过了一段时间的新手期之后这类问题大多都会变得不再那么明显,工作的方向也会逐渐变得清晰起来. 但是没过多久,能了解 ...

  9. linux学习步骤(从入门到精通)

    linux学习步骤(从入门到精通) 来源:http://os.chinaunix.net/a2008/0603/980/000000980392.shtml 博客 作者:新华网 编辑:周荣茂 学习步骤 ...

最新文章

  1. 人形图案c语言程序_做游戏,学编程(C语言) 7 学习EasyX图形交互功能----flappy bird源代码...
  2. Softmax算法:逻辑回归的扩展
  3. 远程服务器系统管理,如何远程管理服务器系统(转载)
  4. python旅游推荐系统_如何用Python搭建一个简单的推荐系统?
  5. 对于访问IIS元数据库失败的解决
  6. 入门机器学习(七)--神经网络
  7. 机器学习笔记(一)----基本概念
  8. 二叉树中的和为某一值的路径(二)(C++)
  9. 动态创建 Lambda 表达式
  10. 【空间分析-文章学习笔记】2 北京各行业的空间分布分析
  11. 简述静态全局变量的概念 C++
  12. Easyui--官网
  13. 计算机过滤器的作用,前置过滤器有什么好处 前置过滤器好处介绍【详解】
  14. 微信公众号开发环境搭建
  15. 日语基础复习 Day 11
  16. Hamming Weight的算法分析
  17. AXURE建设团队项目原型
  18. Authorware常见问题的解决
  19. 图论:关于弦图的几个图论结论
  20. 多暂估的库存如何调整_实例教你会计知识——存货暂估

热门文章

  1. msf安卓手机木马实战要点整理
  2. linux命令写成sh脚本并执行
  3. app上架被拒的各种原因
  4. C#之浮点数与十六进制数互转小工具
  5. Hive的安装与优化
  6. 计算机视觉教程核心版(八)卷积神经网络各种层
  7. Mac版ToDesk 安装教程
  8. mysql myisam 优化,mysql myisam 优化设置 | 很文博客
  9. 利用PowerQuery 快速进行限定时间表创建
  10. Android studio屡次停止运行