练习题1:交互式脚本(用户决定变量内容)

代码

[root@node01 bin]$  vim showname.sh
#!/bin/bash
# Program:
#  User inputs his first name and last name. Program shows his full name.
# History:
# 2018/22/23  Rivers  First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
read -p "Please input your first name: " firstname # 提示使用者输入
read -p "Please input your last name: " lastname # 提示使用者输入
echo -e "\nYour full name is: ${firstname} ${lastname}" # 结果由屏幕输出

测试

[root@node01 bin]# vim showname.sh
[root@node01 bin]# sh showname.sh
Please input your first name: Rivers
Please input your last name: XueYour full name is: Rivers Xue

讲解

bash有很多内部指令,这些指令需要自己通过man去慢慢学习。
而这里刚好用到read和echo,所以先简单说一下这两个内部命令的简单用法

  • read
    读取来自键盘输入的变量
    -p :这个参数可以更友好的给用户一些提示,如果啥都不加,让用户直接输入,用户并清楚该输入什么
  • echo
    读取变量

练习题2:随着日期变化(利用date进行文件建立)

代码

[root@node01 bin]$  vim create_3_filename.sh
#!/bin/bash
# Program:
#  Program creates three files, which named by user's input and date command.
# History:
# 2018/12/22  Rivers  First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
# 1. 让使用者输入文件名,并取得 fileuser 这个变量;
echo -e "I will use 'touch' command to create 3 files." # 纯粹显示信息
read -p "Please input your filename: " fileuser # 提示使用者输入
# 2. 为了避免使用者随意按 Enter ,利用变量功能分析档名是否有设定?
filename=${fileuser:-"filename"} # 开始判断有否配置文件名
# 3. 开始利用 date 指令来取得所需要的档名了;
date1=$(date --date='2 days ago' +%Y%m%d) # 前两天的日期
date2=$(date --date='1 days ago' +%Y%m%d) # 前一天的日期
date3=$(date +%Y%m%d) # 今天的日期
file1=${filename}${date1} # 底下三行在配置文件名
file2=${filename}${date2}
file3=${filename}${date3}
# 4. 将档名建立吧!
touch "${file1}" # 底下三行在建立文件
touch "${file2}"
touch "${file3}"

测试

[root@node01 bin]# sh create_3_filename.sh
I will use 'touch' command to create 3 files.
Please input your filename: tb_
[root@node01 bin]# ll
total 12
-rw-r--r-- 1 root root 1062 Dec 21 09:58 create_3_filename.sh
-rwxr-xr-x 1 root root  243 Dec 20 16:21 hello.sh
-rw-r--r-- 1 root root  456 Dec 21 09:39 showname.sh
-rw-r--r-- 1 root root    0 Dec 21 09:58 tb_20181219
-rw-r--r-- 1 root root    0 Dec 21 09:58 tb_20181220
-rw-r--r-- 1 root root    0 Dec 21 09:58 tb_20181221

讲解

  • date
    打印或设置系统日期和时间
    参数:
    –date 这个参数后的字符串真的是比较随意的,比如上上面写的2 days ago,系统就能知道是两天之前

练习题3:数值运算(简单的加减乘除)

代码

[root@node01 bin]$
#!/bin/bash
# Program:
#  User inputs 2 integer numbers; program will cross these two numbers.
# History:
# 2018/12/22  Rivers  First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "You SHOULD input 2 numbers, I will multiplying them! \n"
read -p "first number: " firstnu
read -p "second number: " secnu
total=$((${firstnu}*${secnu}))
echo -e "\nThe result of ${firstnu} x ${secnu} is ==> ${total}"

测试

[root@node01 bin]# sh multiplying.sh
You SHOULD input 2 numbers, I will multiplying them! first number: 2
second number: 3The result of 2 x 3 is ==> 6

讲解

首先我们知道只有整数变量才能进行计算,而bash中也仅仅支持整数

我们需要特别注意一下total这个变量的赋值格式

var=$((运算内容))

如果我们不使用这样的格式,而是直接用

total=${firstnu}*${secnu}

会出现什么效果呢?
测试一波

[root@node01 bin]# sh multiplying.sh
You SHOULD input 2 numbers, I will multiplying them! first number: 2
second number: 3The result of 2 x 3 is ==> 2*3

哈哈,这个很明显优点搞笑了,为什么会这样?就是因为你输入的数据bash根本不知道是整数,所以它就不会自动计算了,除非你声明它们是整数,或者声明total为整数
比如:

declare -i total=${firstnu}*${secnu}

但还是建议用第一种方式,毕竟简单

Shell脚本编程之(二)简单的Shell脚本练习相关推荐

  1. 第五课-第三讲05_03_bash脚本编程之二 条件判断

    第五课-第三讲05_03_bash脚本编程之二 条件判断 变量名称:只能保含字母数字下划线,且不能数字开头.不能和系统中已存在的环境变量重名.见名知意 bash中如何实现条件判断? 条件测试类型: 整 ...

  2. Linux shell编程(二):shell语法

    shell 语法 shell 执行命令操作 当shell读取输入时,它将执行一系列操作.如果输入表示注释的开头,则shell将忽略注释符号('#')和该行的其余部分. shell 读取和执行命令时将经 ...

  3. shell脚本编程for循环求阶乘_shell脚本编程(完结版).pdf

    shell脚本编程(完结版) Shell 脚本编程学习笔记 2013 年 5 月 2 日 追风~忆梦 如有任何疑问,请联系作者,作者 QQ:1028150787,或者到韦东山群共同讨论 1 Shell ...

  4. 在linux中编写shell脚本文件,如何编写简单的Shell脚本(Script)文件之Linux的基本操作...

    如何编写简单的Shell脚本(Script)文件之Linux的基本操作 新建一个文本文件包含所需要的脚本.举例,我会使用pico编辑器写一个脚本用来运行程序tar,带上必要的可选项可以用来解压从因特网 ...

  5. 【 Kotlin 脚本编程Kotlin Scripting 】Linux Shell 脚本与Kotlin Scripting

    Linux 英文解释为 Linux is not Unix. Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的. Linux 是一 ...

  6. shell脚本编程学习笔记1(xdl)——shell基础与Bash基本功能()

    shell脚本编程学习笔记1--shell基础与Bash基本功能 1,简介: 1,Shell就是一个命令行解释器,用以连接输入设别和内核. 2,Shell是解 释执行的脚本语言,在Shell中可以直接 ...

  7. sh脚本和bash脚本_使用此简单的Bash脚本在家打印双面文档

    sh脚本和bash脚本 我们家里有一台激光打印机. 惠普(Hewlett Packard)LaserJet Pro CP1525nw彩色打印机是一种较旧的型号,但它是一台出色的打印机,可以可靠地进行彩 ...

  8. 基于arcgis的python脚本编程视频-面向ArcGIS的Python脚本编程 PDF 高清版

    给大家带来的一篇关于Python相关的电子书资源,介绍了关于ArcGIS.Python.脚本编程方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小49.9 MB,Paul编写,目前豆瓣.亚 ...

  9. Shell脚本编程之(一)Shell脚本简介

    什么是Shell脚本 shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面, 搭 ...

  10. Shell脚本学习-阶段二十八-shell练习二

    文章目录-练习2 前言 1.编写shell脚本程序,完成如下功能: 输出hello world ! 2.编写shell脚本程序,完成如下功能: 输入你的姓名,输出 hello, nice to mee ...

最新文章

  1. redis哨兵机制在集群中的应用
  2. LLVM 与 Clang 介绍 — LinuxTOY
  3. 用pytorch实现简易RNN
  4. linux连接redis 命令_在Docker中使用Redis
  5. OCP笔记部分整理-学习参考
  6. Ubuntu Pycharm启动后卡住无法操作
  7. 【MySQL】java应用开发与实践读书笔记
  8. android 最新adt下载地址,Android SDK和最新ADT下载地址
  9. 字体管家射手座 - 绿斗堂字体网
  10. python期货量化交易_基于vnpy搭建期货量化交易机器人(一)准备工作
  11. 持有美签,加拿大签证申请攻略(内含图文)
  12. tas5717php手册,TAS5715 具有扬声器均衡、双频带 DRC 和 DC 保护的 25W 立体声 I2S 音频放大器...
  13. 多线程如何等待所有子线程一起完成任务后再执行主线程
  14. 1383: 手机短号 (多实例)
  15. 深度学习相关公开数据集
  16. 【问】SQL安装时提示“安装程序配置服务器失败”?
  17. 如何利用无线路由接收无线信号
  18. Android开发:adb调试显示adb.e unknown command device解决方法
  19. 人工智能 水壶问题 python解法
  20. 菜鸟学概率统计——最大后验概率(MAP)

热门文章

  1. Taints和Tolerations联用,将pod部署到k8s的master节点
  2. .JQuery中的Ajax
  3. [PAT] 02-线性结构2 Reversing Linked List(单向链表的逆转) - C语言实现
  4. HDU 5510 Bazinga(kmp)
  5. 【转】使用Boost Graph library(二)
  6. 转载:Windows Phone 7 资源汇总(超全)
  7. canvas简单实现动态时钟
  8. 使用“Grafeas”元数据API和“Kritis”部署授权管理软件供应链
  9. 使用Nexus搭建Maven仓库
  10. 中澳科学家在量子安全通信领域合作研究取得突破性进展