iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >Bash Shell脚本学习小结
  • 898
分享到

Bash Shell脚本学习小结

小结脚本Bash 2022-06-04 21:06:18 898人浏览 八月长安
摘要

1.字符截断:如果是一般路径的字符截断可以用basename和dirname这两个工具:basename可以从一个文件路径中截一个文件名 例如: $ basename /home/file.tarfile

1.字符截断:

如果是一般路径的字符截断可以用basename和dirname这两个工具
basename可以从一个文件路径中截一个文件名

例如:


$ basename /home/file.tar
file.tar

dirname可以从一个文件路径中截到一个目录路径
例如:

$ dirname /home/file.tar
/home

不使用外部工具进行字符截断
bash有自带的功能来对变量进行字符截断,一般使用"##", "#", "%%", "%", "*" 组合来实现。例如:

$ string=hellowbashshell
$ echo ${string##*sh}
ell
$ echo ${string#*sh}
shell
$ echo ${string%%sh*}
hellowba
$ echo ${string%sh*}
hellowbash

"#"表示从字符开始部分除去,一旦匹配则立即除去
"##"表示从字符开始部分除去,会搜整个字符串最长的和的匹配来除去
"%"表示从字符结束的部分除去,一旦匹配成公则立即除去
"%%"表示从字符结束的部分开始除去,会搜寻整个字符穿中最长的匹配来除去
"*"统配符,一般与“##”或"#"联用时放在搜索字符串的左边,例如:${String#*sh}(在sh的左边),与"%%"或"%"联用时会放在匹配字符串的右边,例如:${String%%sh*}

常用技巧:

在路径中取文件名:${path##*/}(与basename相同功能)
在路径中取目录路径:${path%/*}(与dirname相同功能)
取文件的扩展名:${path##*.}

2.自变量的接收

接收来自命令行传入的参数,第一个参数用$1表示,第二个参数$2表示,。。。以此类推。注意:$0表示脚本文件名。另外一个在shell编程中经常用到的是“$@”这个代表所有的参数,。你可以用一个循环来遍历这个参数。如果用java来类比的话,可以把$@看作是man函数中定义的那个数组

3.if语句:
格式:


if [ condition ]
then
action
fi

注意:“if”和“[”之间需要空格,如果你不空格,shell会报告语法错误的。我就被这个浪费了好一阵时间

conditon测试类型对照表

运算符 描述 示例 文件比较运算符 -e filename 如果 filename存在,则为真 [ -e /var/log/syslog ] -d filename 如果 filename为目录,则为真 [ -d /tmp/mydir ] -f filename 如果 filename为常规文件,则为真 [ -f /usr/bin/grep ] -L filename 如果 filename为符号链接,则为真 [ -L /usr/bin/grep ] -r filename 如果 filename可读,则为真 [ -r /var/log/syslog ] -w filename 如果 filename可写,则为真 [ -w /var/mytmp.txt ] -x filename 如果 filename可执行,则为真 [ -L /usr/bin/grep ] filename1-nt filename2 如果 filename1比 filename2新,则为真 [ /tmp/install/etc/services -nt /etc/services ] filename1-ot filename2 如果 filename1比 filename2旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ] 字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法) -z string 如果 string长度为零,则为真 [ -z "$myvar" ] -n string 如果 string长度非零,则为真 [ -n "$myvar" ] string1= string2 如果 string1与 string2相同,则为真 [ "$myvar" = "one two three" ] string1!= string2 如果 string1与 string2不同,则为真 [ "$myvar" != "one two three" ] 算术比较运算符 num1-eq num2 等于 [ 3 -eq $mynum ] num1-ne num2 不等于 [ 3 -ne $mynum ] num1-lt num2 小于 [ 3 -lt $mynum ] num1-le num2 小于或等于 [ 3 -le $mynum ] num1-gt num2 大于 [ 3 -gt $mynum ] num1-ge num2 大于或等于 [ 3 -ge $mynum ]
感觉bash 中的if相比其他的一些语言智能多了,在bash中,测试一个文件的存在跟比较两个数字的大小没有什么两样 ;)

4.for语句

bash里的语句总是那么的人性化,十分的接近自然语言,在for语句中几乎可以迭代任何类似与集合的数据类型(或许这样个说法不对,但我确实想不到更好的词来代替)。
看一个例子:


#!/bin/bash
for args in $@
do
echo $args
done


把上面这段代码录入保存为showargs.sh设置为可执行(chmod +x showargs.sh)执行:


$ ./showargs.sh arg1 arg2 arg3 arg4
arg1
arg2
arg3
arg4


这个例子中,我们用到了之“$@”,它代表了所有的命令行参数。在这里用for对其进行遍历,系统迭代地从$@中取出命令行参数把他放到args中,最后使用echo $args进行输出。
for更经常用到的是遍历目录,下面的例子用于列出当前目录下的所有文件和文件夹的名称


$ for file in *
> do
> echo $file
> done

这里用*代表当前目录,列出的是所有的文件和文件夹的名称,在这里,文件夹和文件你是分不出来的,如果你需要,你应该用if [-d ${file}]来做一下判断。
对于文件遍历,更有趣的是,你可以在 “in” 后面接上多个表达式。也就是说,你可以一次在遍历多个目录。

下面这段代码能把当前目录下Go文件夹和do文件夹里的文件复制到fo文件夹下

#!/bin/bash
for args in ./go/* ./do/*
do
cp ${args} ./fo
echo "copying ${args} to ./fo/${args}"
done

--结束END--

本文标题: Bash Shell脚本学习小结

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux shell脚本学习指南
    从头一来二去阅读语法和命令说明,对于脚本小白来说比较枯燥,难以坚持,所以这里选择对一份完整的shell脚本代码来逐行逐段解读,希望可以渡一渡小白,帮助我们快速进入脚本的大门。 老司机...
    99+
    2024-04-02
  • 3个shell的小脚本的练习
    1;打印9*9乘法表2;输出国际象棋的棋盘3;猴子;摘了n个香蕉每天,吃一半,+1第九天剩一个求摘了几个香蕉 1;打印99乘法表一:for i in {1..9}do for j in seq $idoecho -n “$i$j=$(i*j...
    99+
    2023-01-31
    脚本 shell
  • Linux Bash脚本练习3
    1.任务描述:写一个脚本实现如下功能:manageuser.sh --add user1,user2,user3,...manageuser.sh --del user1,user2,user3,...manageuser.sh --hel...
    99+
    2023-01-31
    脚本 Linux Bash
  • Python学习之shell脚本的使用详解
    目录一、sh是什么二、使用步骤1.安装2.使用示例3.使用sh执行命令4.关键字参数5.查找命令6.Baking参数一、sh是什么 SH是一个独特的子进程包装器,可将您的系统程序动态...
    99+
    2023-05-17
    Python使用shell脚本 Python shell脚本 Python shell
  • python调用bash shell脚本方法
    目录1. os.system()1.1. demo2. os.popen()2.1 demo3. commands模块4. subprocess4.1 demo1. os.syste...
    99+
    2024-04-02
  • 如何学好shell脚本
    这篇文章主要介绍“如何学好shell脚本”,在日常操作中,相信很多人在如何学好shell脚本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何学好shell脚本”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-09
  • JWT学习小结
    JWT全称JSON-Web-Tokens,是一套应对Http其无状态且明文传递请求的特性的规范,保证请求的安全性。我们一般用它来在服务端和客户端之间传递用户的身份信息,实现状态保持。 1,相较于常见的session+cookie的实现方式...
    99+
    2023-01-30
    小结 JWT
  • python 脚本学习(一)
    日志读取脚本功能:用于读取某日志文件,可指定某个匹配条件,返回文本中匹配到的该行和前面的n行。此脚本可以接受3个参数,分别是文件对象、搜索的关键词、返回匹配的该行前面的行数。 #!/usr/local/python27/bin/python...
    99+
    2023-01-31
    脚本 python
  • Java和Unix Shell编程学习笔记:如何优化你的Shell脚本?
    Shell脚本是一种非常重要的编程语言,它可以帮助我们自动化执行一些重复性的任务,提高工作效率。但是,当脚本变得越来越复杂时,我们很容易陷入性能问题。本文将介绍一些优化Shell脚本的技巧,以提高其性能。 一、使用变量 Shell脚本中使...
    99+
    2023-09-12
    shell unix 学习笔记
  • Bash Shell脚本中数组的使用方法
    这篇文章主要介绍“Bash Shell脚本中数组的使用方法”,在日常操作中,相信很多人在Bash Shell脚本中数组的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Bash Shell脚本中数组的使...
    99+
    2023-06-17
  • Shell脚本中$符号的嵌套使用方法小结
    目录1 示例2 说明本文主要介绍在编写 Shell 脚本时,通过嵌套使用 $ 符号,间接获取变量或表达式的值的具体方法。 先说结论,在 Shell 脚本中,可以通过使用 eval 命令来实现 $ 符号的嵌套使用...
    99+
    2023-05-06
    Shell $符号嵌套 Shell $符号
  • 写出健壮Bash Shell脚本技巧教程
    本篇内容介绍了“写出健壮Bash Shell脚本技巧教程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用set -u你因为没有对变量初始化...
    99+
    2023-06-09
  • PHP 学习笔记:如何在 UNIX Shell 中运行 PHP 脚本?
    PHP 是一种广泛使用的服务器端脚本语言,它可以用来编写动态网页、命令行脚本等。在 UNIX 系统中,我们可以使用 Shell 来运行 PHP 脚本,本文将介绍如何在 UNIX Shell 中运行 PHP 脚本。 安装 PHP 在开始...
    99+
    2023-08-07
    学习笔记 unix shell
  • Shell和Python学习教程总结
    博友们好,由于运维相关技术不断发展,个人能力也不断提高,日常积累的经验不能及时更新到以往的博文中。因此,为了更好的帮助大家学习运维技术,特地针对Shell和Python脚本语言总结了文档,此文档会不定期修改或增加知识点。 下载地址:百度云盘...
    99+
    2023-01-31
    教程 Shell Python
  • Linux下打包PHP应用程序:学习Bash脚本的必要性。
    Linux下打包PHP应用程序:学习Bash脚本的必要性 在Linux下开发和部署PHP应用程序时,打包是一个非常重要的环节。打包可以将所有的代码、配置文件、依赖库等打包成一个可执行的文件,方便部署和移植。而打包的过程中,Bash脚本是一个...
    99+
    2023-11-06
    linux 打包 bash
  • python调用bash shell脚本的方法是什么
    本篇文章为大家展示了python调用bash shell脚本的方法是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. os.system()help(os.system)1.1. d...
    99+
    2023-06-22
  • Java和Unix Shell编程学习笔记:如何编写可重用的Shell脚本?
    Shell脚本是Unix系统中常用的一种脚本语言,它可以通过命令行界面或者脚本文件来执行一系列的操作。而编写可重用的Shell脚本则可以大大提高脚本的灵活性和可维护性,使得我们可以更加高效地完成工作。本文将介绍如何编写可重用的Shell脚...
    99+
    2023-09-12
    shell unix 学习笔记
  • CocosCreator学习之模块化脚本
    Cocos Creator模块化脚本 Cocos Creator 允许你将代码拆分成多个脚本文件,并且让它们相互调用。这个步骤简称为 模块化。 模块化使你可以在 Cocos Crea...
    99+
    2024-04-02
  • 48个Shell脚本使用小技巧
    这篇文章主要讲解了“48个Shell脚本使用小技巧”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“48个Shell脚本使用小技巧”吧!0. shell 调试代码如下:sh -x somefil...
    99+
    2023-06-09
  • 如何解决Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器
    这篇文章主要讲解了“如何解决Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决Shell脚本bash: ./t...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作