返回顶部
首页 > 资讯 > 操作系统 >linux基础之Shell Script入门介绍
  • 321
分享到

linux基础之Shell Script入门介绍

入门基础linux 2022-06-04 21:06:10 321人浏览 泡泡鱼
摘要

linux基础之shell Script 1 Shell Scipt使用指令和基本程序设计结构写成的程序,可以完成复杂的处理流程 1.1 程序书写 #!/bin/bash# Program:#

linux基础之shell Script

1 Shell Scipt
使用指令和基本程序设计结构写成的程序,可以完成复杂的处理流程

1.1 程序书写


#!/bin/bash
# Program:
# This program shows "Hello Wrold" in your screen.
# History:
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
echo -e "Hello World!an"
exit 0

第一行 #!/bin/bash 说明使用的shell类型,不同shell语法可能不同,所以要说明使用的是哪种shell
其它#开始的表示注释,注释一般需要说明
程序功能
版本历史
作者及联系方式
设置好PATH变量,以便直接可以调用相应路径下的命令
程序主体部分
exit 0 表示程序执行成功,向环境返回0
1.2 程序执行
bash $bash sh01.sh #如果用sh sh01.sh而sh又不是指向bash,那么sh01.sh内的语法就会不一致,因为用 #sh去解释了bash语法写的shell script,针对这个程序,如果 #$type sh #得到sh is hashed (/bin/sh) #那么会输出-e Hello world!,而非Hello world!


$./xxx.sh $chmod +x sh01.sh $./sh01.sh
source $ source sh01.sh

注:用bash和用source的不同在于,用bash执行时,shell script其实是在在父程序bash下新建了一个 bash子程序,这个子程序中执行,当程序执行完后,shell script里定义的变量都会随子程序的结束而消失, 而用source执行时,是在父程序bash中执行,shell script里定义的变量都还在。

2 简单Shell练习

2.1 例1 接收用户输入


# !/bin/bash
# Program:
# This program is used to read user's input
# Site: www.jbxue.com
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
read -p "Your first name:" firstname # tell user to input
read -p "Your last name:" lastname # tell user to input
echo -e "nYour full name: $firstname $lastname"
exit 0

调用:


$ bash sh02.sh
Your first name:Minix
Your last name:007
Your full name: Minix 007

2.2 例2 按日期建立相似名字的文件


# !/bin/bash
# Program:
# This program is used to create files according to date
# History:
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
# Get filename from user
echo -e "I will use 'touch' to create three files."
read -p "Please input your filename:" tmpfilename
# Prevent the user input [Enter]
# Check whether filename exists or not
filename=${tmpfilename:-"filename"}
# Get the final filename according to date
date1=$(date --date='2 days aGo' +%Y%m%d) # date of 2 days ago
date2=$(date --date='1 days ago' +%Y%m%d) # date of yesterday
date3=$(date +%Y%m%d) # date of today
filename1=${filename}${date1}
filename2=${filename}${date2}
filename3=${filename}${date3}
# Create file
touch "$filename1"
touch "$filename2"
touch "$filename3"
exit 0

调用:


$ bash sh03.sh
I will use 'touch' to create three files.
Please input your filename:WhoKnows
$ ls W*
WhoKnows20130201 WhoKnows20130202 WhoKnows20130203

3 判断式
3.1 测试文件是否存在
test -e filename会根据filename是否存在返回0或1,再交由echo显示结果:


$ test -e sh01.sh && echo "Exists" || echo "Not exists"
Exists
$ test -e sh0x.sh && echo "Exists" || echo "Not exists"
Not exists

3.2 test常用选项
3.2.1 文件类型


-e file :file是否存在
-f file :file是否存在且为文件
-d file :file是否存在且为目录

3.2.2 权限
-r file :file是否有读的权限

3.2.3 文件新旧比较
-nt file1 file2 : file1 是否比 file2新

3.2.4 整数,字符串,多重条件判断
-z string: string是否为空
例:输出指定文件类型及属性


# !/bin/bash
# Program:
# This program is used to output type and permission of the target file
# History:
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
# Get filename from user
echo -e "Input name of the file that you want to check.n"
read -p "Filename:" filename
test -z $filename && echo "You must input a filename." && exit 0
# Check whether the file exists or not
test ! -e $filename && echo "The file '$filename' DO NOT exists" && exit 0
# Check type and permission of the file
test -f $filename && filetype="regular file"
test -d $filename && filetype="directory"
test -r $filename && perm="readable"
test -w $filename && perm="$perm writable"
test -x $filename && perm="$perm executable"
# Output result
echo "The filename:$filename is a $filetype"
echo "And Permissions are :$perm"
exit 0

调用:


$ bash sh04.sh
Input name of the file that you want to check.

Filename:sh01.sh
The filename:sh01.sh is a regular file
And Permissions are :readable writable executable

3.3 使用[]判断

测试文件是否存在


$ [ -e "sh01.sh" ] ; echo $?
0
$ [ -e "sh0x.sh" ] ; echo $?
1

注意[]内空格必须有
这种方法和test的test -e "sho1.sh" ; echo $? 是一致的

4 Shell Script 参数


# !/bin/bash
# Program:
# This program is used to ouput parameter of the shell script
# History:
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
echo "The script's name is ==> $0"
echo "Total parameter number is ==> $#"
# Check whether number of the parameter is less than 2
[ "$#" -lt 2 ] && echo "The number of parameter is less than 2.Stop here." && exit 0
echo "The whole parameter is ==> '$@'"
echo "The first parameter is ==> $1"
echo "The first parameter is ==> $2"
exit 0

调用:


$ bash sh05.sh 1a 2b 3c 4d
The script's name is ==> sh05.sh
Total parameter number is ==> 4
The whole parameter is ==> '1a 2b 3c 4d'
The first parameter is ==> 1a
The first parameter is ==> 2b

注:从以上程序可以看出与参数有关的预设变量如何表示

5 条件表达式

5.1 if 结构


# !/bin/bash
# Program:
# This program is used to show if else expression
# History:
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
read -p "Please input [Y/N]" choice
if [ "$choice" == "Y" ] || [ "$choice" == "y" ];then
echo "OK, continue"
exit 0
fi
if [ "$choice" == "N" ] || [ "$choice" == "n" ];then
echo "Oh, interupt"
exit 0
fi
exit 0

调用:


$ bash sh06.sh
Please input [Y/N]y
OK, continue
$ bash sh06.sh
Please input [Y/N]n
Oh, interupt

5.2 if else 结构


# !/bin/bash
# Program:
# This program is used to show if else expression
# History:
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
read -p "Please input [Y/N]" choice
if [ "$choice" == "Y" ] || [ "$choice" == "y" ];then
echo "OK, continue"
exit 0
elif [ "$choice" == "N" ] || [ "$choice" == "n" ];then
echo "Oh, interupt"
exit 0
else
echo "Input [Y/N]"
fi
exit 0

5.3 case


# !/bin/bash
# Program:
# This program is used to show case expression
# History:
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
read -p "Tell me your choice:[1-3]=>" choice
case $choice in
"1")
echo "Your choice is ONE"

"2")
echo "Your choice is TWO"

"3")
echo "Your choice is THREE"

esac
exit 0

调用:


$ bash sh08.sh
Tell me your choice:[1-3]=>2
Your choice is TWO
$ bash sh08.sh
Tell me your choice:[1-3]=>1
Your choice is ONE
$ bash sh08.sh
Tell me your choice:[1-3]=>3
Your choice is THREE

6 函数


# !/bin/bash
# Program:
# This program is used to test function
# History:
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
function myprint(){
echo -n "Your choice is "
}
read -p "Tell me your choice:[1-3]=>" choice
case $choice in
"1")
myprint;echo "ONE"

"2")
myprint;echo "TWO"

"3")
myprint;echo "THREE"

esac
exit 0

调用:


$ bash sh09.sh
Tell me your choice:[1-3]=>1
Your choice is ONE
$ bash sh09.sh
Tell me your choice:[1-3]=>2
Your choice is TWO
$ bash sh09.sh
Tell me your choice:[1-3]=>3
Your choice is THREE

7 循环
7.1 while


# !/bin/bash
# Program:
# This program shows while expression
# History:
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
while [ "$choice" != "yes" ]
do
read -p "Give your choice [yes/no]:" choice
done
exit 0

调用:


$ bash sh10.sh
Give your choice [yes/no]:no
Give your choice [yes/no]:no
Give your choice [yes/no]:nx
Give your choice [yes/no]:yes

7.2 for


# !/bin/bash
# Program:
# This program is used to demo for expression
# History:
# 2013/2/3 on_1y First release
PATH=$PATH
export PATH
for choice in 1 2 3
do
echo "your choice is $choice"
done
exit 0

调用示例:


$ bash sh11.sh
your choice is 1
your choice is 2
your choice is 3

8 shell script的追踪与Debug
sh -n xx.sh # 语法检查
sh -x xx.sh # 列出xx.sh的执行过程

--结束END--

本文标题: linux基础之Shell Script入门介绍

本文链接: https://lsjlt.com/news/18007.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • linux基础之Shell Script入门介绍
    linux基础之Shell Script 1 Shell Scipt使用指令和基本程序设计结构写成的程序,可以完成复杂的处理流程 1.1 程序书写 #!/bin/bash# Program:# ...
    99+
    2022-06-04
    入门 基础 linux
  • typeScript入门基础介绍
    目录一、安装 TS二、Vscode 自动编译 ts三、入门 TS基础数据类型接口类TS 的特点: 始于 javaScript 归于 javaScript 。强大的类型系统。先进的 j...
    99+
    2024-04-02
  • C#语言入门基础介绍
    目录一、.NET 体系结构二、Hello world三、类型和变量四、程序结构前言: C#(读作“See Sharp”)是一种新式编程语言,不仅面向对象,还类型安全。 开发人员利用 ...
    99+
    2024-04-02
  • Mysql入门基础(1)-->基本介绍
    第一章      数据库概述          &nbs...
    99+
    2024-04-02
  • Kubernetes(K8S)入门基础内容介绍
    Introduction basic of kubernetes 我们要学习 Kubernetes,就有首先了解 Kubernetes 的技术范围、基础理论知识库等,要学习 Kube...
    99+
    2024-04-02
  • PHP入门介绍及语言基础
    🌱博客主页:大寄一场. 😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注 目录 前言 一、变量和数据类型 二、运算符和表达式 三、条件语句 四、循环语句 前言 PHP是一种非常流...
    99+
    2023-09-06
    php 开发语言
  • Python 入门基础1 --语言介绍
    本节目录: 一、编程语言介绍 二、python解释器介绍 三、安装python解释器 四.运行python程序的两种方式 五、变量 六、后期补充内容 一、编程语言介绍   1.机器语言:     直接用二进制编...
    99+
    2023-01-30
    入门 语言 基础
  • Python类和对象基础入门介绍
    目录视频Python 类和对象创建和使用类根据类创建实例视频 观看视频 Python 类和对象 面向对象编程是编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。 编写类时,...
    99+
    2024-04-02
  • PHP循环函数使用介绍之PHP基础入门教程
    PHP中的循环主要用户执行相同代码块运行指定的次数。 PHP循环主要有四种:while,do…while,for,foreach。下面我们分开讲解每种循环的用法。 while语句: ...
    99+
    2022-11-15
    PHP循环
  • Linux 学习基础入门之Linux分区
    安装Linux,首先要有镜像文件,以CentOS为例,可以在官网或者国内某些镜像Server来获取镜像。根据自己的需要可以选择是 Everything 或者minimal iso.这里不写关于安装的细节,对于其中的一些关键步骤做些说明。1....
    99+
    2023-06-05
  • PHP之基础入门
    Php Php全称为:Hypertext Preprocessor(中文名:超文本预处理器); 简称:personal Home page; 开始php之前,要先设置它的文件编码信息 header(‘Content-type:te...
    99+
    2023-09-10
    php 服务器 开发语言
  • python入门之python介绍
    python基础之Python优点    1.简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。    2.易学:Python极其容易上手,...
    99+
    2023-01-31
    入门 python
  • JavaScript基础入门--JavaScript简介
    一、简单好学,富有表现力 —— JavaScript简介1.1 JavaScript的用途JavaScript用来制作web页面交互效果,提升用户体验。 简单列出几个JavaScript能够制作的...
    99+
    2024-04-02
  • hbase shell基础和常用命令介绍
    这篇文章主要介绍“hbase shell基础和常用命令介绍”,在日常操作中,相信很多人在hbase shell基础和常用命令介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”hbase shell基础和常用命...
    99+
    2023-06-09
  • python基础之爬虫入门
    目录前言一、简单静态网页的爬取1.1 选取爬虫策略——缩略图1.2 选取爬虫策略——高清大图二、动态加载网站的爬取2.1 选取爬虫策略——selenium2.2 选取爬虫策略——ap...
    99+
    2024-04-02
  • java基础入门之IO流
    目录io学习框架:文件:Io流的原理:节点流和处理流:BufferWriter:处理字节的处理流:标准输入和输出:转换流:打印流:Properties类:总结io学习框架: 文件:...
    99+
    2024-04-02
  • python爬虫之『入门基础』
    1.首先需要了解一下http请求,当用户在地址栏中输入网址,发送网络请求的过程是什么? 可以参考我之前学习的时候转载的一篇文章一次完整的HTTP事务过程–超详细 2.还需要了解一下http的请求方式 有兴趣的同学可以去查一下http的八...
    99+
    2023-01-31
    爬虫 入门 基础
  • python入门之语言基础
    目录1、注释2、代码缩进3、保留字4、标识符5、变量6、基础数据类型7、数据类型转换总结1、注释 注释是指在程序代码中添加的标注性的文字 单行注释:使用 # 注释内容 多行注释:在...
    99+
    2024-04-02
  • 入门shell脚本基础及原理
    目录1.特殊变量2.内部环境变量3.整数以及字符判断3.1整数判断3.2字符测试4.文件判断5.read输入6.if判断7.案例选择判断8.for循环9.while循环10.深入练习1.写一个脚本,输入三个数字进行相应的...
    99+
    2022-06-04
    shell脚本原理 shell脚本入门
  • linux脚本基础详细介绍
    目录1.脚本vim环境2.shell脚本中环境的定义方法3.shell脚本中的转译字符4.脚本中变量的数组5.系统中命令的别名设定6.脚本中的传参7.脚本中的循环函数1.脚本vim环境 在脚本中通常要显示一些脚本信息,这...
    99+
    2022-06-04
    linux脚本基础 linux脚本
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作