首页 > 系统相关 >linux学习day04(shell学习)

linux学习day04(shell学习)

时间:2023-05-18 21:01:40浏览次数:38  
标签:bin 文件 shell number echo linux day04 bash

  1. shell是一个命令执行器,作用是遵循一定的语法将输入的命令加以解释并传给系统,用户可以用shell来启动、挂起、停止甚至是编写一些程序。shell是用户和linux的桥梁,定义了各种变量和参数,并提供了很多在高阶语言中才具有的控制结构,包括循环和分支,虽然他不是内核的一部分,但是她调用了系统内核的大部分功能来执行程序、创建文档并以并行的方式协调各个程序的运行
  2. 本质上,shell就是命令行命令简单的组合到一个文件里面。
  3. 程序基础
    1. 必须在文件的第一行加   !#/bin/sh 告诉系统他后面的参数用来该文件的执行
    2. chmod +x filename,因为vim编辑过的文件并没有可执行的功能
  4. 变量
    1. 变量名=值 取变量值($){注意变量赋值时,=两边不能有空格},且所有结束语句都不用加分号
    2. 当num=2 $numnd 打印不了时,可以${num}nd来打印
    3. 默认变量
      1. $#:传入脚本的命令行参数个数(和c的区别,c的个数包括命令本身)
      2. $*:所有命令行参数值,在各个参数值间留有空格
      3. $0;命令本身
      4. $1:第一个命令行参数
      5. $2:第二个命令行参数
    4. 局部变量  在变量前加local(和C差不多)
  5. if 格式,
    1. -eq:相同
    2. -ne:不同
    3. -gt:大于
    4. -lt:小于
    5. -ge:大于或等于
    6. -le:小于或小于
    7. -z:为空
    8. -n:不为空
    9. #!/bin/bash
      a=$1
      b=$2
      if [ -z $a ] || [ -z $b ]
      then
          echo "please enter 2 no"
          exit 1
      fi
      if [ $a -eq $b ] ; then
          echo "number a = number b"
      else if [ $a -gt $b ]
          then
              echo "number a>number b"
          elif [ $a -lt $b ]
              then
                  echo "number a<number b"
          fi
      fi
  6. -e 文件已存在 ;-f文件是普通文件 ;-s文件大小不为0 ;-d文件是一个目录 ;-r文件对当前用户可以读取;-w文件对当前用户可以写入 ;-x文件对当前用户可以执行
    1.   
      #!/bin/sh 
      folder=/home 
      [ -r "$folder" ] && echo "Can read $folder" 
      [ -f "$folder" ] || echo "this is not file" 
  7. for 
    1.   
      #!/bin/bash 
      for day in Sun Mon Tue Wed Thu Fri Sat
      do
          echo $day
      done 

      统计当前目录下的文件数

    2. #!/bin/bash
      
      counter=0
      for files in *
      do
          counter=`expr $counter + 1`
      done
      echo "There are $counter files in `pwd` we need to process"
  8. while
    1. 将用户输入的数字按倒叙方式输出  
      #!/bin/bash
      echo -n "Pleasw enter number : "
      read n
      sd=0
      rev=""
      on=$n
      echo "$n"
      while [ $n -gt 0 ]
      do
          sd=$(( $n % 10 )) # get Remainder
          n=$(( $n / 10 ))  # get next digit
          rev=$( echo $rev$sd)
      done
      echo  "$on in a reverse order $rev"
  9. until
    1. 移动一个文件,如果目标位置存在文件,则监视该文件,直到文件被删除后才移动该文件  
      #!/bin/bash
      if [ "$1" = "" ] || [ "$2" = "" ]
      then
          echo "Please enter file name"
          exit 1
      fi
      if [ -e $2 ]
      then
          echo "The file already exists"
          until [ ! -f $2 ]
          do
              sleep 1
          done
      fi
      if [ ! `mv $1 $2` ]
      then
          echo "mv sucessful"
      else
          echo "mv error"
      fi
  10. case
    1.   
      #!/bin/bash 
      echo "Hit a key, then hit return."
      read Keypress 
      case "$Keypress" in
          [A-Z] ) echo "Uppercase letter";;
          [a-z] ) echo "Lowercase letter";;
          [0-9] ) echo "Digit";;
          * ) echo "Punctuation, whitespace, or other";;
      esac 

标签:bin,文件,shell,number,echo,linux,day04,bash
From: https://www.cnblogs.com/gunancheng/p/17413148.html

相关文章

  • 虚拟机linux系统密码忘记了该怎么办?
    当你的linux系统的密码忘记了该怎么办?首先不要慌,重启电脑,开机的时候出现这个页面的时候点击e然后出现这个页面把里面的ro修改为rw修改为rw之后在这一行语句的最后面输入enforcing=0init=/bin/bash,然后ctrl加x进入单机模式,进入单机模式之后,输入修改密码的命令,passwdroot......
  • linux DHCP
    目录一、DHCP概念 二、DHCP工作过程三、DHCP实验              一、DHCP概念概念:动态主机配置协议,自动为计算机分配tcp/ip参数DHCP的优点:1.减少管理员的工作难度2.避免错误的可能3.避免IP......
  • linux安装redis的多种方式
    一、通用方式要在Linux上安装Redis,可以按照以下步骤进行操作:1.打开终端,使用以下命令下载Redis的压缩包:wgethttp://download.redis.io/releases/redis-x.x.x.tar.gz注意将"x.x.x"替换为你想要下载的Redis版本号。2.解压下载的压缩包:tarxzfredis-x.x.x.tar.gz进入......
  • linux 网络基础
    目录一、查看网卡二、创建虚拟网卡三、修改主机名四、管理路由表 五、管理端口 六、网络通信七、配置网卡              一、查看网卡命令:ifconfig:查看当前可用设备主要查看ip地址和mac地址 ifconfig+设备......
  • Linux的信号处理机制
    信号是Linux操作系统中进程间通讯的方式,是一种异步的通知机制。信号的产生1.硬件方式用户输入:比如在终端上按下组合键ctrl+C,产生SIGINT信号;硬件异常:CPU检测到内存非法访问等异常,通知内核生成相应信号,并发送给发生事件的进程;2.软件方式通过系统调用,发送signal信号:kill(),rai......
  • 在Linux的Ubuntu系统下安装QT及相关环境配置
    qt下载地址:http://download.qt.io/archive/qt/?tdsourcetag=s_pcqq_aiomsg 安装QT    从官网下载QT的安装包,在本地安装。本次使用的是Ubuntu18.06以及QT5.14.2,下文皆使用此版本作为示例。    首先安装QT,具体操作如下: 1、使用cd命令:cd/home/(usr)/download,切......
  • Vmware Linux 找不到网卡IP
    执行以下指令systemctlstatusNetworkManager#启动NetworkManagersystemctlenableNetworkManager#将NetworkManager设为开机自启nmclinon#使NetworkManager接管网络设置nmclicmens33ipv6.methoddisabled#将连......
  • xshell的使用
    安装后找到文件所在位置打开xhell.exe然后点击文件新建 然后设置名称主机主机设为你要连接电脑的ip地址得到此页面 然后输入你要登录的电脑的账户和密码给他创建一个新账户输入useraddliubei(账户名)之后输入passwdliubei设置密码 然后输入idli......
  • Linux Centos 7 磁盘扩容
    背景情况在使用Centos的时候,由于上传的附件越来越多。原有的磁盘空间不足以用来存储更多的附件。也不可能通过迁移系统的方式来改善这个问题。最优解的方式就是采取扩容磁盘的方式。准备工作操作系统:Centos7(其他Linux系统类似)其他:向系统添加一块或多块磁盘开始迁移查......
  • Linux后台程序相关操作
    目录1.如何关闭/查看后台进程2.程序挂后台自行运行操作2.1使用supervisor(方法一)2.1.1supervisor的常用命令2.1.2supervisor的安装配置2.2使用systemd(方法二)1.如何关闭/查看后台进程查看正在运行的程序PID:netstat-nap查看指定运行程序的PID:ps-aux|grep程序名称......