鸟哥的Linux私房菜 学习 Shell Scripts

第十三章、学习 Shell Scripts

重点回顾

  • shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文字档,将一些 shell 的语法与命令(含外部命令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的

更多参考http://cn.linux.vbird.org/linux_basic/0340bashshell-scripts.php#hint

本章习题

  • 请创建一支 script ,当你运行该 script 的时候,该 script 可以显示: 1. 你目前的身份 (用 whoami) 2. 你目前所在的目录 (用 pwd)

1_whoami.sh

#!/bin/bash

echo "目前的身份: $(whoami)"
echo "目前所在的目录: $(pwd)"

  • 请自行创建一支程序,该程序可以用来计算『你还有几天可以过生日』啊
    2_date.sh
 now=$(date +%m%d)
if [ "$birthday" == "$now" ]; then
    echo "Happy birthday to you!"
elif [ "$birthday" -gt "$now" ]; then
    year=$(date +%Y)
    total_d=$(($((`date --date="$year$birthday" +%s`-`date +%s`))/60/60/24))
    echo "Your birthday will be $total_d later"
else
    year=$(($(date +%Y)+1))
    total_d=$(($((`date --date="$year$birthday" +%s`-`date +%s`))/60/60/24))
    echo "Your birthday will be $total_d later"
fi

在这里插入图片描述
参考答案

#!/bin/bash
read -p "Pleas input your birthday (MMDD, ex> 0709): " bir
now=`date +%m%d`
if [ "$bir" == "$now" ]; then
    echo "Happy Birthday to you!!!"
elif [ "$bir" -gt "$now" ]; then
    year=`date +%Y`
    total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))
    echo "Your birthday will be $total_d later"
else
    year=$((`date +%Y`+1))
    total_d=$(($((`date --date="$year$bir" +%s`-`date +%s`))/60/60/24))
    echo "Your birthday will be $total_d later"
fi

在这里插入图片描述

  • 让使用者输入一个数字,程序可以由 1+2+3… 一直累加到使用者输入的数字为止。
    3_while.sh
#!/bin/bash

read -p "输入一个数字: " n
s=0 #累加值
i=0

# while [ $i != $n ]
while [ $i -lt "$n" ] # -lt <
do
	i=$((i+1))
	s=$((s+i))
done

echo "The result of '1+2+3+...+$n' is ==> $s"

3_for.sh

#!/bin/bash

read -r -p "输入一个数字: " n
s=0 #累加值

for i in $(seq 1 $n)
do
	s=$((s+i))
done

echo "The result of '1+2+3+...+$n' is ==> $s"

3_for_c.sh

#!/bin/bash

read -r -p "输入一个数字: " n
s=0 #累加值

for (( i=1;i<=n;i+=1 ))
do
	s=$((s+i))
done

echo "The result of '1+2+3+...+$n' is ==> $s"

在这里插入图片描述

  • 撰写一支程序,他的作用是: 1.) 先查看一下 /root/test/logical 这个名称是否存在; 2.) 若不存在,则创建一个文件,使用 touch 来创建,创建完成后离开; 3.) 如果存在的话,判断该名称是否为文件,若为文件则将之删除后创建一个目录,档名为 logical ,之后离开; 4.) 如果存在的话,而且该名称为目录,则移除此目录!
    4_file.sh
#!/bin/bash

name='logical' #'/root/test/logical'
if [ -e $name ]  #查看一下名称是否存在
then
    if [ -f $name ]  #如果存在的话,判断该名称是否为文件
    then
        #若为文件则将之删除后创建一个目录
        rm -f $name
        mkdir $name
    elif [ -d $name ]    #如果存在的话,而且该名称为目录,则移除此目录
    then
        rm -rf $name
    fi
else
    touch $name  #若不存在,则创建一个文件
fi

在这里插入图片描述
参考答案

#!/bin/bash
if [ ! -e logical ]; then
    touch logical
    echo "Just make a file logical"
    exit 1
elif [ -e logical ] && [ -f logical ]; then
    rm logical
    mkdir logical
    echo "remove file ==> logical"
    echo "and make directory logical"
    exit 1
elif [ -e logical ] && [ -d logical ]; then
    rm -rf logical
    echo "remove directory ==> logical"
    exit 1
else
    echo "Does here have anything?"
fi

在这里插入图片描述

  • 我们知道 /etc/passwd 里面以 : 来分隔,第一栏为帐号名称。请写一只程序,可以将 /etc/passwd
    的第一栏取出,而且每一栏都以一行字串『The 1 account is “root” 』来显示,那个 1 表示行数。
#!/bin/bash

# users=$(cut -d ':' -f1 /etc/passwd)
users=$(cat /etc/passwd | cut -d ':' -f1)
num=0
for username in $users
do
    (( num=num+1 ))
    echo "The $num account is \"$username\""  
done

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/9337.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MacBookPro 安装Python

Homebrew 假设你没有安装Homebrew&#xff0c;那么就执行&#xff1a; /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”安装Python 执行命令&#xff1a; yutaoMacBook-Pro Homebrew % brew install Python可以看到…

第一个禁止ChatGPT的西方国家

意大利成为第一个有效禁止 ChatGPT 的西方国家。 由于可能违反隐私和数据法&#xff0c;该国的数据监管机构已下令开发聊天机器人的 OpenAI 停止运营。 意大利数据保护局 (GPDP) 提到了一些担忧&#xff0c;包括大量收集用户数据和存储以训练 AI 算法。 ChatGPT 是一种大型语…

产品经理必读|用户研究方法总结①

众所周知&#xff0c;理解用户需求&#xff0c;识别用户痛点&#xff0c;是产品或功能成型之前绕不开的过程。而要获取到用户真实的需求和痛点&#xff0c;唯一的方法就是做用户调研。而用研的方法都有哪些呢&#xff1f;今天我就来给大家分享一下行业中常见的用研方法。 用研的…

C. Triangles(枚举)

Problem - C - Codeforces Gildong有一个方形板&#xff0c;由n行n列的方形单元格组成&#xff0c;每个单元格由一个数字(从0到9)组成&#xff0c;第i行第j列的单元格可用(&#xff0c;)表示&#xff0c;每个单元格的边长为1。Gildong喜欢大的东西&#xff0c;所以对于每一个数…

个人-计算机操作系统第六章

第六章 输入输出系统 一、章节习题 1、引入缓冲的主要目的______ A 改善CPU和I/O设备之间速度不匹配的情况 B 节省内存 C 提高CPU的利用率 D 提高I/O设备的效率 2、CPU输出数据的速度远远高于打印机的打印速度&#xff0c;为了解决这一矛盾&#xff0c;可采用_____。 A …

geth指定版本安装

下载源码 cd /usr/local git clone https://github.com/ethereum/go-ethereum.git 或者(mirror) git clone https://ghproxy.com/https://github.com/ethereum/go-ethereum.git拓展&#xff1a;如何git clone指定tag版本 git clone -b v1.10.5 https://github.com/ethereum/…

不要告诉同事你要离职!打算跳槽,新公司开出两倍薪资,私下告诉要好的同事,却被同事出卖给领导!...

职场上有真正的朋友吗&#xff1f;来看看这位网友的讲述&#xff1a;一位前同事本来打算跳槽&#xff0c;新公司开出的薪资是原来的两倍。她私下告诉了几位同事自己打算离职的消息&#xff0c;并跟同事们分享了工资翻倍的喜悦。可她万万没想到&#xff0c;两天之后的公司会议上…

Python 进阶指南(编程轻松进阶):十六、面向对象编程和继承

原文&#xff1a;http://inventwithpython.com/beyond/chapter16.html 定义一个函数&#xff0c;并从几个地方调用它&#xff0c;可以省去复制和粘贴源代码的麻烦。不复制代码是一个很好的实践&#xff0c;因为如果你需要修改它&#xff08;无论是为了修复一个错误还是添加新特…

在Linux系统下使用GDB调试C++程序【命令行调试与vscode编译器调试】

文章目录1. Linux下编译器&#xff0c;调试器安装2. GDB调试器介绍1. 概述2. 常用调试命令参数3. Linux下C命令行调试实战0. 安装超级终端Terminator1. 准备代码2. 进入调试模式3. 调试过程4. Linux下vscode使用cmake和gdb&#xff1a;5. 补充&#xff1a;关于vscode的一些标识…

ChatGPT遭多国调查,OpenAI凌晨就安全问题发文,GPT-5要暂缓?

最近&#xff0c;意大利宣布禁用 ChatGPT&#xff0c;因为 OpenAI 违反了意大利相关的隐私规则和数据保护法&#xff0c;出现了用户数据丢失情况&#xff0c;而且未向用户告知。 消息出来后&#xff0c;德国、法国、爱尔兰、西班牙等国的监管部门都表示正在密切关注 ChatGPT 的…

“智慧”的大楼,为啥落地这么难?

在5A级写字楼上班是什么感觉?      当你加班至凌晨,灯光和空调系统仍然会为你继续服务。      当你进入停车场,系统会自动引导至方便停车的空位。      当你点完外卖但无法抽身时,送餐机器人便会将午饭送到公司门口。    所谓5A,就是指建筑的高度智能化,它包含…

SND0611支持PWM调光功能的线性恒流LED驱动芯片 完美代替SLM411A 用于在各种LED照明产品

深力科电子SND0611支持PWM调光功能的线性恒流LED驱动芯片 完美代替SLM411A 用于在各种LED照明产品 SND0611 系列产品是用于产生单通道、高精度恒 流源的 LED 驱动芯片&#xff0c;在各种 LED 照明产品中 非常简单易用。具有宽输入电压范围、高输出精度、超 低 drop-out 压降、…

Python网络爬虫进阶扩展

学习爬虫不是一天就能学会的&#xff0c;得循序渐进的慢慢学透了&#xff0c;才能更好的做爬虫相关的工作。下面的爬虫有关的有些知识点肯定要学会。 1、如何使scrapy爬取信息不打印在命令窗口中 通常&#xff0c;我们使用这条命令运行自己的scrapy爬虫&#xff1a; scrapy c…

算法风险防控

算法风险防控是指在算法应用过程中&#xff0c;通过对算法应用场景、数据、模型和结果等多个方面的风险进行评估和控制&#xff0c;以保障算法应用的安全性、可靠性和合法性。以下是一些常见的算法风险防控措施&#xff1a; 数据风险防控&#xff1a;在算法应用中&#xff0c;…

Shader Graph6-Dot Product节点(中)

一、Dot Product可以实现褪色的效果&#xff0c;等价与desaturation节点&#xff0c;据说性能比直接使用Desaturation节点有提升&#xff0c;未经过测试。 打开Unity&#xff0c;新建Shader Graph&#xff0c;x0.2126&#xff0c;y0.7152x&#xff0c;z0.0722 UE中是这样的 二…

linux 远程连接MySQL错误“plugin caching_sha2_password could not be loaded”的解决办法乱码

网上有两种解决办法&#xff0c;一种就是升级sqlyog&#xff0c;一种是修改mysql默认身份验证插件。 升级SQLyog 第一种就不用说了&#xff0c;SQLyog-13.1.6-0.x64是默认支持mysql8.0以上身份验证&#xff0c;把低版本的sqlyog升级到13.1.6就可以解决。 修改身份验证插件 首先…

国产台灯哪个品牌比较好?2023分享国内护眼灯排名

台灯已经是最常见的照明灯具&#xff0c;所以近些年受到许多青少年、家长的青睐&#xff0c;如果问国产台灯哪个牌子比较好&#xff1f;我会告诉你&#xff0c;在我使用的十几款护眼台灯中&#xff0c;比较优秀的是南卡护眼台灯Pro、明基MindDuo2 、雷士行星 、京东京造 星云台…

如何访问EMC VPLEX

本文介绍如何访问EMC的VPLEX虚拟化存储网关&#xff0c;下面的方法适用于VPLEX VS2系统&#xff0c;但也适用于VS6系统&#xff0c;只是VS6的管理控制台MMCS和VS2物理上不一样&#xff0c;但实质上是相同的&#xff0c;也都提供了一样的网络端口和IP地址。如果对VS6有问题&…

或许能用 ChatGPT 插件实现财富自由

文章目录或许能用 ChatGPT 插件实现财富自由1. 认识一下1.1 是什么1.2 怎么用2. 举个例2.1 Wolfram2.2 Browsing3. 怎么做到的4. 财富自由4.1 生活类插件4.2 品牌推广类5. 限制或许能用 ChatGPT 插件实现财富自由 我们知道&#xff0c;当前 ChatGPT 最大的局限性就是模型训…

【kubernetes-工具篇】K9S详解-宝藏k8s界面工具

K9S简介 K9s是一个命令行界面&#xff08;CLI&#xff09;工具&#xff0c;用于管理Kubernetes集群。它是一个流行的开源工具&#xff0c;可以帮助Kubernetes管理员和开发人员轻松管理他们的Kubernetes集群。在本文中&#xff0c;我们将简单介绍K9s的概念、功能和如何使用它。…