精华内容
下载资源
问答
  • 【Shell脚本的创建简单使用】 下面所有操作,都是基于一个已经建立好的 1.sh 脚本 变量声明 Shell变量的声明和 python 语言的变量声明类似,即 ...变量默认类型字符串,即使 a=123,a其实是“12...

    Shell脚本的创建简单使用

    下面所有操作,都是基于一个已经建立好的 1.sh 脚本

    变量声明

    Shell变量的声明和 python 语言的变量声明类似,即

    变量名=值
    a=123
    
    a=123
    b=456
    c="hello world !"
    

    值得注意的是

    • 等于号的前后不能有空格
    • 变量命名规则,要比较规范,不能以下划线,问号什么的开头
    • 变量默认类型是字符串,即使 a=123,a其实是“123”,至于怎么加减,下面细说

    变量使用

    使用一个变量,不能直接打变量名,因为我们可以把脚本想象成在命令行里打字,我们直接打一个a,系统怎么知道打的是 a 命令 还是调用a变量?

    变量的引用,需要在前面加 $,即美元符号,告诉系统这是一个变量,此外,如果使用 ${变量名},即括号括起来,那么会进一步精确化变量的名字,更不容易出错,不过这个括号不是必须的

    编写一个简单的脚本验证:

    #!/bin/bash
    
    a=123
    b=456
    c="hello world !"
    
    echo $a+$b
    echo $c
    

    在这里插入图片描述
    可以看到,a+b并没有产生加法运算,因为默认的变量类型是字符串,而且我们这个 + 号,也是字符串,这里类似C++中宏定义的替换。。。

    格式化输出

    有时候我们想在变量前面,输出说明字符串,比如 “这个字符串的值是: abc”,abc是某个变量的值,这时候想起printf的好 ,可以使用类似printf的方式,引号也可以去掉,其实也可以理解成简单的宏定义替换

    echo "说明语句 $变量名"
    echo 说明语句 $变量名
    

    运行这个脚本

    #!/bin/bash
    
    a=123
    b=456
    c="Hello World"
    
    echo "a+b=$a+$b"
    echo a+b=$a+$b
    echo c is :$c
    echo "c is :$c"
    

    在这里插入图片描述

    变量的加减乘除

    expr语句

    使用expr语句以宣告这是一条表达式,注意expr要用 反引号 括起来,和 ~ 是一个键,按shift是 ~,不按是反引号,在ESC下面

    `expr $变量a 运算符 $变量b`
    

    修改刚刚的脚本

    #!/bin/bash
    
    a=123
    b=456
    c=`expr $a + $b`
    
    echo $a+$b
    echo $c
    

    在这里插入图片描述
    再次验证了上面的说法,可以看到第一行是直接 $a+$b,相当于宏定义字符串得到简单替换,第二行使用expr语句,真正做到了加减法,值得注意的是,运算符左右必须有空格

    其他运算符

    加减乘除

    #!/bin/bash
    
    a=123
    b=10
    
    echo a + b = `expr $a + $b`
    echo a - b = `expr $a - $b`
    echo a \* b = `expr $a \* $b`
    echo a / b = `expr $a / $b`
    echo *
    

    在这里插入图片描述

    乘法的转义

    值得注意的是,乘法需要用 \* 来转义,直接打 *遍历当前文件夹下的所有文件名,和java的import java.xxx.*;类似,下面这个例子证明了使用 \* 来转义的重要性

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    关系判断

    [ $变量1 == $变量2 ]  :变量1是否  [等于]	变量2, 返回true or false
    [ $变量1 != $变量2 ]  :变量1是否 [不等于]	变量2, 返回true or false
    [ $变量1 -eq $变量2 ] :变量1是否  [等于]  	变量2, 返回true or false
    [ $变量1 -ne $变量2 ] :变量1是否 [不等于]	变量2, 返回true or false
    [ $变量1 -gt $变量2 ] :变量1是否  [大于]	变量2, 返回true or false
    [ $变量1 -lt $变量2 ] :变量1是否  [小于]	变量2, 返回true or false
    [ $变量1 -ge $变量2 ] :变量1是否 [大于等于] 变量2, 返回true or false
    [ $变量1 -le $变量2 ] :变量1是否 [小于等于] 变量2, 返回true or false
    
    解释:
    eq : equal 等于
    ne : not equal 不等于
    gt : greater than 大于
    lt : less than 小于
    ge : greater equal 大于等于
    le : less equal 小于等于
    

    if判断语句

    if语句和大多数的变成语句类似,只是结束if的 } 变成了 fi,可以理解为final,终结的意思结尾记得加fi

    if 条件语句
    then
    	语句1
    	语句2
    	...
    	语句n
    fi
    

    也可以加入else语句

    if 条件语句
    then
    	语句1
    	语句2
    	...
    	语句n
    else
    	语句1
    	语句2
    	...
    	语句n
    fi
    

    演示

    执行以下脚本,产生以下输出

    #!/bin/bash
    
    a=123
    b=124
    
    if [ $a == $b ]
    then
            echo a=b
            echo a=b hhhhh
    else
            echo a!=b
            echo a!=b AAhhhh
    fi
    

    在这里插入图片描述

    另一种形式

    值得注意的是,用两个括号括住,然后像一般编程语言一样判断,即直接写大于小于符号即可

    执行以下脚本,将产生以下输出

    #!/bin/bash
    
    a=123
    b=124
    
    if (($a < $b))
    then
            echo a=b
            echo a=b hhhhh
    else
            echo a!=b
            echo a!=b AAhhhh
    fi
    

    在这里插入图片描述

    循环语句

    while语句

    同if类似,结束的 } 被替换为 done

    while 条件
    do
    	语句1
    	语句2
    	...
    	语句n
    done
    

    还记得刚刚创建了5个txt吗,我们循环删除他们,删除的同时打印当前目录下的文件,执行以下脚本,产生以下输出

    #!/bin/bash
    
    ls
    
    i=1
    
    while (($i <= 5))
    do
            rm $i.txt
            i=`expr $i + 1`
            ls
    done
    

    在这里插入图片描述

    关于自增,其他的详细方法

    i=`expr $i + 1`
    let i+=1
    let "i++"
    ((i++))
    

    for语句

    枚举迭代变量

    通过枚举 v1,v2,来实现循环

    for 迭代变量 in v1 v2 v3 ... vn
    do
    	语句
    	...
    	语句
    done
    
    #!/bin/bash
    
    for i in 1 2 3
    do
            echo $i
            let "i++"
    done
    

    在这里插入图片描述

    for+seq序列实现循环

    seq语句:(别忘了反引号)

    `seq 首项 公差 末项`
    

    执行以下脚本,产生以下输出

    #!/bin/bash
    
    for i in `seq 0 2 8`
    do
            echo $i
    done
    

    在这里插入图片描述

    展开全文
  • linux-shell脚本

    2017-03-22 13:32:06
    shell脚本后缀为.sh  1.创建.sh文件,然后写程序 ... 无类型,都是字符类型  变量赋值:  变量名=数据  变量名和=之间不能有空格  引用变量:  $变量名  预定义变量:shell脚本语法事先定义好的

    shell脚本后缀为.sh
     1.创建.sh文件,然后写程序
     2.添加可执行权限
      chmod +x first.sh
     3.执行脚本
      ./first.sh

    shell脚本变量直接使用,不需要定义 
       无类型,都是字符类型
     变量赋值:
      变量名=数据
      变量名和=之间不能有空格
     引用变量:
      $变量名
     预定义变量:shell脚本语法事先定义好的具有特殊含义的变量。
     $?  上一个命令的结果  为0表示成功 否则表示失败
     $0-9     第1-10个命令行字符串
     $#   命令行字符串个数,不包括源程序执行字符串
     $* $@    所有的命令行字符串


    echo 如何不换行
      echo -n "内容"
      echo -e "内容\c"
     如何一条指令输出多行。。。。
     echo -e 让""中的替换符起作用
      \t
      \n
      \c   不显示后面的东西

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    echo "这个脚本用来了解变量"

    name="hello"  
    #写访问变量
    gongsi=$name
    echo $name
    echo $gongsi
    echo $#

    echo "变量0"
    echo $0
    echo "变量1"
    echo $1

    echo -e "我好\n"
    echo -e "你好\c"

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。



    展开全文
  • Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。 分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息...

    在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory。
    分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。
    解决:

    1. 在Linux使用dos2unix转换
      dos2unix FILENAME
      
    2. 在Liunx使用vi转换
      chmod +x FILENAME
      vim FILENAME
      :set ff  # 查看文件类型
      :set ff = unix # 修改文件类型
      :wq
      
    展开全文
  • 一、什么是脚本  脚本是一个包含一系列命令序列的可执行(777)文本文件。... shell脚本允许用户设置和使用自己的变量,变量可以是数字或者字符串,用户无需指定其类型,也无需在使用前定义。  #!...

     一、什么是脚本

      脚本是一个包含一系列命令序列的可执行(777)文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到自动执行。

    二、脚本编程

      #!/bin/sh 首行固定格式

      #!表明该脚本的的解析器,这里使用/bin/sh来解析

    2.1变量

      shell脚本允许用户设置和使用自己的变量,变量可以是数字或者字符串,用户无需指定其类型,也无需在使用前定义。

      #!/bin/sh
      a="hello world"

      b=5
      echo “A is: a  //使

    符号

      echo “B is $b”

    2.2参数

      同C程序一样,shell本中也可以使用命令行参数

    1. $#:传入脚本的命令行参数个数
    2. $*:所有命令行参数值,在各个参数值之间留有空格
    3. $0:命令本身(shell文件名)
    4. $1:第一个命令行参数
    5. $2:第二个命令行参数

    2.3数学计算

      shell脚本提供了一个专门的命令expr来计算数学表达式,例如expr 5 +1,但是当要把计算的结果赋值给其他变量的时候,还必须使用反号(键盘上~按键就是反引号)。

      var=`expr 20 / 10`

    2.4if语句

      shell脚本中最基本的流程控制语句就是if-then,使用格式:

      if [ condition ] (特别提醒:方括号左右两边必须有空格)

      then
        commands
      else
        commands
      fi

    2.4.1for语句

      shell脚本提供了for命令,用于创建类似于c语言编程中for语句一样的循环。使用格式:

      for var in list
      do
      commands
      done

    2.4.2while语句

      shell脚本提供了while命令,用于创建类似于c语言编程中while语句一样的循环。使用格式:

      while [ condition ]
      do
      commands
      done 

    2.5条件比较

      比较操作     整数操作   字符串操作
      相同       -eq       =
      不同       -ne       !=
      大于       -gt       >
      小于       -lt        <
      大于或等于     -ge
      小于或等于     -le
      为空       -z
      不为空       -n

    例:

    1. 比较整数a和b是否相等:if [ a=
    • b ] (也可用eq)
    • 判断整数a是否大于整数b:if [ agt
    • b]
    • 比较字符串a和b是否相等:if [ a=
    • b]
    • 判断字符串a是否为空: if [ -z $a]
    • 判断整数变量a是否大于b:if [ agt
    1. b]

    注意:
      1. 在“[”和“]”符号的左右都留有空格
      2. “=”左右都有空格

      -e 文件已经存在
      -f 文件是普通文件
      -s 文件大小不为零
      -d 文件是一个目录
      -r 文件对当前用户可以读取
      -w 文件对当前用户可以写入
      -x 文件对当前用户可以执行
      

    2.6sed编辑器

      Sed(Stream Editor) : 流式编辑器又名行编辑器,每次只编辑一行,使用格式如下:

      sed [操作选项] ‘命令’ 文件名
    常用操作选项:
      -n∶指定处理后只显示该行
      -n∶指定处理后只显示该行
      -e∶进行多项编辑任务
      -i∶直接修改读取的文件内容,而不是由屏幕输出

    常用命令选项:

      p 打印匹配行
      a 新增
      c 替代一行
      d 删除定位行
      s 替代一行中的某些部分

    2.6.1sed-范例

    1. 显示
      •sed -n '2p' tmp.txt 只显示第2行
      •sed -n '1,3p' temp.txt 打印第1行到第3行
      •sed -n '/mov/'p temp.txt 打印含movie的行
    2. 删除
      •sed ‘2d’ tmp.txt 删除第2行
      •sed ‘3,dtmp.txt3

    :最后一行
    3. 查询
      sed -n ‘/hello/p’ tmp.txt 查询包括关键字hello的所有行

    4. 代替
      •sed ‘1c Hi’ tmp.txt 第1行代替为Hi
      •sed -n '/hello/p' tmp.txt | sed 's/hello/bird/g'
    5. 插入
      •sed -i ‘$a bye’ tmp.txt 在最后一行插入bye

    2.6.2awk分析器

      awk是一个强大的文本分析工具,它把文件逐行的读入,以空格为默认分隔符将每行分割为多个字段。

    使用方式:
      awk ‘{pattern + action}' filenames
      pattern 要查找的内容
      pattern 要查找的内容
      action 找到匹配内容时所执行的命令
    范例:
      

    转载于:https://www.cnblogs.com/lvxiaoning/p/6349190.html

    展开全文
  • 文章目录文章参考一、快速入门查看bash 类型基本语法介绍执行sh文件二、基本语法a. 变量双引号 VS 单引号的区别b.传递参数规则$* 与 $@ 区别:案例常用基本属性遍历参数c. 数组定义数组数组赋值读取数组,数组元素的...
  • linux脚本编程技术---8

    2016-04-11 23:01:00
    一、什么是脚本  脚本是一个包含一系列命令序列的可执行(777)文本文件。... shell脚本允许用户设置和使用自己的变量,变量可以是数字或者字符串,用户无需指定其类型,也无需在使用前定义。  #!...
  • 1 #!/bin/bash 2 # int-or-string.sh: 整型还是字符串? 3 4 a=2334 # 整型. 5 let "a += 1" 6 echo "a = $a " # a = 2335 7 echo # 还是整型. 8 9 ...
  • shell脚本判断文件类型

    千次阅读 2019-06-30 17:34:00
    [kiosk@asimov ~]$ vim check_file.sh $1在shell中称为“位置参数”,表示传入的第1个参数(第1个入参)。 test -z $1 是一个判断表达式,用于判断$1的值是否为空字符串。 虽然 Linux 和 UNIX 的每个版本中都包含 ...
  • Linux_文件类型/扩展名

    2013-09-17 12:02:06
    - 文件 d 目录 l 连接文件(link)- 文件/目录快捷方式 s 数据接口文件(socket) b 数据区块文件(block) c 字符设备文件 ...基本上,linux文件没有所谓的扩展名;...*.sh 脚本/批处理文件。 /* 压缩文件
  • Linux严格区分大小写 Linux中所有内容以文件形式保存,包括硬件 ...脚本文件:“.sh” 配置文件:“*.conf” Linux使用字符界面的优势 字符界面占用的系统资源更少 字符界面减少了出错、被攻击的可能性 ...
  • shell脚本学习

    2021-01-19 19:37:02
    shell学习shell是什么第一个程序写执行变量定义变量使用变量只读变量、删除变量变量类型shell字符串数组注释shell传递参数运算表达式 [完整教程] shell是什么 Shell 编程跟 JavaScript、php 编程一样,只要有一个能...
  • shell脚本学习使用(一)

    2018-12-06 23:26:40
    shell脚本基础 只针对于bash类型脚本。 文件格式 ...都是以字符类型存储,(指定变量类型还没看到) a=&quot;hello world&quot; //赋值等号前后不能有空格 echo $a //echo 输出...
  • bash脚本的编写

    2010-07-11 21:39:16
    开发语言有编译语言如C、C++等需要编译后才能执行。...bash 是sh的GNU增强版,是一种弱类型语言,默认情况下变量类型字符型 而且变量不用声明和检查。 一、bash脚本的编写 1》bash的变量有四种类型 ...
  • Linux shell 编程基础变量变量命名local 声明局部变量,只在函数内生效转义:笔记本电话键盘第二排左上角的字符都是元字符,需要使用\转义引用:脚本或命令的返回值 $?命令替换 变量 shell和javascript 一样,是一...
  • linux-shell编程

    2019-08-22 14:15:52
    条件测试整数测试linux的数学运算random文件测试字符测试条件判断式练习0x03 循环0x04 函数定义返回值参数0x05 交互basenameread颜色练习 0x00.前言 shell编程,即脚本编程,属于动态语言(即解释型),是命令的堆砌。...
  • Linux期末考试第四章

    2021-06-18 18:46:23
    填空题 1、Linux系统的输入输出分为三类,分别为:(标准输入)、标准输出和(标准...4、Shell中的变量没有明确的类型,变量值都以字符串的形式存储,但Shell中可能进行一些算数运算。Shell中的运算一般通过两个命令
  • linux中的eval命令

    2021-02-04 20:00:35
    eval是 shell 内置命令,它可以将一个变量中包含的字符串扩展成 shell 脚本并执行。当我们通过字符串拼接的方式生成一个l inux 命令时,可以用 eval 来执行它。...则 info_employee.sh 脚本可以根据
  • Linux 练习3

    2020-04-06 21:10:34
    1、编写脚本selinux.sh,实现开启或禁用SELinux功能 脚本内容 图1: 验证 图2: 图3: 2、统计/etc/fstab文件中每个文件系统类型出现的次数 3、提取出字符串Yd$C@M05MB%9&Bdh7dq+YVixp3vpw中的所有数字 4、...
  • Linux和Windows的不同

    2018-01-19 13:17:26
    Linux字符界面严格区分大小写 1、Linux中所有的内容以文件形式保存,包括硬件(一切内容皆文件) 2、Linux不靠扩展名区分文件类型(靠权限来区分) 3、以下是约定俗称的扩展名(为了方便管理员的使用): 压缩包:...
  • Linux C 编程一站式学习.pdf

    千次下载 热门讨论 2010-11-24 01:27:27
    6. 字符类型与字符编码 3. 简单函数 1. 数学函数 2. 自定义函数 3. 形参和实参 4. 全局变量、局部变量和作用域 4. 分支语句 1. if语句 2. if/else语句 3. 布尔代数 4. switch语句 5. 深入理解函数 1. return语句 2. ...
  • Linux与Bash(一)

    2021-05-21 20:25:34
    第一种执行方法: chmod+x /test.sh #使脚本具有执行权限 r 表示可读取,w 表示可写入,x 表示可执行 ./test.sh #执行脚本,执行的时候会根据代码第一行规定的shell类型解析 第二种执行方法: /bin/sh test.sh #用...
  • 装载: .../bin/sh SYSTEM=`uname -s` #获取操作系统类型,我本地是linux if [ $SYSTEM = "Linux" ] ; then #如果是linux的话打印linux字符串 echo "Linux" elif [ $SYSTEM = "FreeBSD" ] ; then
  • Linux中ls的用法

    2020-02-07 16:52:11
    文件类型包含:普通文件,目录,字符设备文件,块设备文件,符号链接文件等 我们可以用file这个命令来查看文件的属性: 这里可以看到1.sh是个脚本文件 下面开始介绍下ls这个命令的常用的用法: ls的全称是list,ls...
  • 1、修改文件类型 执行:vi finddir.sh输入:set ff如果fileformat=dos ...发现每行脚本最后多了个^M因为MS-DOS及Windows是回车+换行来表示换行,因此在Linux下用Vim查看在Windows下用VC写的代码,行尾后的“^M”符...
  • 发现每行脚本最后多了个M因为MS-DOS及Windows是回车+换行来表示换行,因此在Linux下用Vim查看在Windows下用VC写的代码,行尾后的“M”符号,表示的是符。 在Vim中利用替换功能就可以将“^M”都干掉,键入如下替换...
  • 深入学习shell脚本艺术

    热门讨论 2011-02-22 04:01:01
    而本书除了介绍BASH的知识之外,也有许多有用的关于Linux/UNIX的知识和其他shell的介绍。 在看到本书的英文版后,我决定把它翻译出来,在Linuxsir论坛上结识了译者之一杨春敏共同翻译这本书,600多页的书是本大部头...
  •  Translate:f脆弱点的机制:发送一个畸形的HTTP GET 请求给服务器方一个可执行脚本或相关文件类型(例如.ASP或者global.asa)。这些文件是用于服务器上运行的,绝不会到客户机上去,而这个请求就会导致IIS将这种...

空空如也

空空如也

1 2 3 4
收藏数 61
精华内容 24
关键字:

linuxsh脚本字符类型

linux 订阅