热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux中shell脚本1

shell操作linux的桥梁创建:后缀为.sh的文件编写:头部注释为#!binsh或者#!binbash(注释可写可不写,建议写上)运行:1.通过sh命令执行例如:shhello

shell操作linux的桥梁

        创建:

                后缀为.sh的文件

        编写:

                头部注释为#!/bin/sh或者#!/bin/bash(注释可写可不写,建议写上)

        运行:

                1.通过sh命令执行

                        例如:sh helloworld.sh

                2.通过bash命令执行

                        例如:bash helloworld.sh

                3.通过把文件修改为可执行的文件然后通过./文件命令.sh来执行

                        例如:./helloworld.sh(必须在当前目录下)

变量(动态数据类型,没有数据类型的限制,并且必须初始化)

        定义和初始化

                格式

                        变量名称=值

                例如:

                        x=10 "abc edefg"

                注意:

                        等号两边不能有空格

        使用:通过$区分变量还是一句话

                格式1:

                        $变量

                格式2:

                        ${变量}

                注意:

                        格式1,会把$后所有相连内容看做一个变量

                        格式2,${}表示值引用{}之中的内容分,对相连的内容做了一个区分

$0...$n:表示接收外部参数(执行脚本时,传递的参数)

        格式:

                $下标

        注意:

                $0永远表示脚本名称(所以脚本名称不算数,$0也不算第一个参数)

                下标大于一位数只能使用${}获取参数,因为$下标只把第一位数据看做下标

                *获取所有参数

                $#获取所有参数个数

引号:

        单引号:安原字符串输出

        双引号:可以引用变量,拥有特殊含义的内容

        拼接:连续获取变量

        注意:

                如果有多个引号,连续的形成一对

                引号中使用其他引号,其他引号做字符串使用

字符串

        获取长度

                格式:

                        ${#变量}

        截取:

                格式:

                        ${变量:开始位置:长度}

                注意:

                        ${str::5}:从0获取5个

                        ${str:0}:从0获取到末尾

        替换单个

                格式:

                        ${变量/旧/新}

                注意:从左向右替换第一个

        替换所有

                格式:

                        ${变量//旧/新}

                注意:替换不会再原字符上进行修改,想要修改原字符串只能从新赋值

删除

        从头开始删除

                ${变量#表达式}:匹配第一个删除

                ${变量##表达式}:匹配最后一个删除

        从尾开始删除

                ${变量%表达式}:匹配第一个删除

                ${变量%%表达式}:匹配最后一个删除

        注意:从未开始删除,表达式还是从左向右去写

                删除不会再原字符上进行修改,想要修改原字符串只能从新赋值

运算符

        算术运算符

                bash不支持简单的数学运算,可以通过命令实现expr

                格式1:

`                        expr 值 + 值`

                        注意:符号两边需要加上空格

                格式2:

                        $[值+值]

        比较运算符: > <>&#61; <&#61;....

                格式:

                        $[值符号值](符号两边空格加不加无所谓)

                注意:比较的结果用1(true)和0(false)表示

        逻辑运算符: &/and |/or !/not

                例如:

                        #判断2>1结果

                        echo $[2 > 1]

                        #反转2>1结果

                        echo $[!$[2>1]]

                        #  反转后面的结果2>1 and 2>3  false0

                        echo $[!$[$[2>1]&$[2>3]]]

                        echo $[2>1 & 2<1]


推荐阅读
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • Linux批量复制并重命名和批量复制文件到多个文件夹的方法
    本文介绍了在Linux系统下批量复制并重命名文件以及批量复制文件到多个文件夹的方法。通过使用模式匹配功能,可以方便地实现文件的批量操作。同时,还提供了有关shell语法中的()和{}的参考资料。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • LINUX学习之centos7营救模式
    今天卸载软件的时候,不小心把GNOME的一些组件给卸了,导致桌面无法正常开启,会卡在启动过程中,而我的开机启动模式又是设置为图形界面,所以一开LINUX就卡住了,进入不了命令行界面 ... [详细]
  • Linux Shell脚步的格式
    Shell脚步等多个命令的组合,可以做成一个shell文件(1.sh)赋权执行执行命令的方式前两张新的进程中执行,对当前进程不产生影响(cdtmp;pwds ... [详细]
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
author-avatar
hwongth
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有