shell 教程一:变量,字符串,传参

2023-05-16

一,hello shell
   
   
  1. vi hello.sh
写如下内容:
    
    
  1. linux@ubuntu:~/test_shell$ cat hello.sh
  2. #!/bin/bash
  3. echo "hello shell!"
注意这时的.sh文件没有执行权限,要更改为可执行状态
     
     
  1. linux@ubuntu:~/test_shell$ ls -l hello.sh
  2. -rw-rw-r-- 1 linux linux 33 Dec 19 01:14 hello.sh
  3. linux@ubuntu:~/test_shell$ chmod +x hello.sh
  4. linux@ubuntu:~/test_shell$ ls -l hello.sh
  5. -rwxrwxr-x 1 linux linux 33 Dec 19 01:14 hello.sh
运行hello.sh
      
      
  1. linux@ubuntu:~/test_shell$ ./hello.sh
  2. hello shell!
练习:
       
       
  1. linux@ubuntu:~/shell_test$ vi shell.sh
  2. linux@ubuntu:~/shell_test$ /bin/sh shell.sh
  3. hello world!
  4. linux@ubuntu:~/shell_test$ ./shell.sh
  5. bash: ./shell.sh: Permission denied
  6. linux@ubuntu:~/shell_test$ chmod +x shell.sh
  7. linux@ubuntu:~/shell_test$ ./shell.sh
  8. hello world!
  9. linux@ubuntu:~/shell_test$ ls -l shell.sh
  10. -rwxrwxr-x 1 linux linux 33 Dec 19 06:56 shell.sh
  11. linux@ubuntu:~/shell_test$ cat shell.sh
  12. #!/bin/bash
  13. echo "hello world!"
二,shell变量
1,定义变量
定义变量时,变量名不加美元符号

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

  • 首个字符必须为字母(a-z,A-Z)。
  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。
  • 例如:
  •        
           
    1. linux@ubuntu:~/shell_test$ cat shell.sh
    2. #!/bin/bash
    3. echo "hello world!"
    4. your_name="Liu Jing"
    5. echo $your_name
    6. echo ${your_name}
    输出:
           
           
    1. linux@ubuntu:~/shell_test$ ./shell.sh
    2. hello world!
    3. Liu Jing
    4. Liu Jing
注意:
  1. your_name = "xiao ming"
等号“=”前后都不能有空格,否则不能识别,这点比较坑
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
   
   
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "hello world!"
  4. your_name="Liu Jing"
  5. echo $your_name
  6. echo ${your_name}
  7. for skill in C C++ Java Pthon Andorid; do
  8. echo "I am good at ${skill}Language!"
  9. done
  10. linux@ubuntu:~/shell_test$ ./shell.sh
  11. hello world!
  12. Liu Jing
  13. Liu Jing
  14. I am good at CLanguage!
  15. I am good at C++Language!
  16. I am good at JavaLanguage!
  17. I am good at PthonLanguage!
  18. I am good at AndoridLanguage!

如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillLanguage!当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

推荐给所有变量加上花括号,这是个好的编程习惯。

下面证明其为空:

    
    
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "hello world!"
  4. your_name="Liu Jing"
  5. echo $your_name
  6. echo ${your_name}
  7. for skill in C C++ Java Pthon Andorid; do
  8. echo "I am good at $skillLanguage!"
  9. done
  10. linux@ubuntu:~/shell_test$ ./shell.sh
  11. hello world!
  12. Liu Jing
  13. Liu Jing
  14. I am good at !
  15. I am good at !
  16. I am good at !
  17. I am good at !
  18. I am good at !
2,修改已定义过的变量
已定义的变量,可以被重新定义,
但注意,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)。
修改如下:
     
     
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "hello world!"
  4. your_name="Liu Jing"
  5. echo $your_name
  6. your_name="xiao niu"
  7. echo $your_name
  8. linux@ubuntu:~/shell_test$ ./shell.sh
  9. hello world!
  10. Liu Jing
  11. xiao niu
3,只读变量
      
      
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "hello world!"
  4. your_name="Liu Jing"
  5. echo $your_name
  6. readonly your_name
  7. your_name="xiao niu"
  8. echo $your_name
  9. linux@ubuntu:~/shell_test$ ./shell.sh
  10. hello world!
  11. Liu Jing
  12. ./shell.sh: line 9: your_name: readonly variable
  13. Liu Jing

删除变量

使用 unset 命令可以删除变量。变量被删除后不能再次使用。unset 命令不能删除只读变量。

语法:

     
     
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "hello world!"
  4. your_name="Liu Jing"
  5. echo $your_name
  6. unset your_name
  7. echo $your_name
  8. echo "end"
  9. linux@ubuntu:~/shell_test$ ./shell.sh
  10. hello world!
  11. Liu Jing
  12. end

Shell 字符串

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号

单引号

单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
    
    
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "hello world!"
  4. your_name='Liu Jing'
  5. echo 'This is $your_name'
  6. echo $your_name
  7. echo "end"
  8. linux@ubuntu:~/shell_test$ ./shell.sh
  9. hello world!
  10. This is $your_name
  11. Liu Jing
  12. end

双引号

双引号的优点:

  • 双引号里可以有变量
  • 双引号里可以出现转义字符
     
     
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "hello world!"
  4. your_name="Liu Jing"
  5. echo "I know your name is ${your_name},is not?"
  6. echo "I know your name is \"$your_name\",is not?"
  7. echo $your_name
  8. echo "end"
  9. linux@ubuntu:~/shell_test$ ./shell.sh
  10. hello world!
  11. I know your name is Liu Jing,is not?
  12. I know your name is $your_name,is not?
  13. Liu Jing
  14. end

拼接字符串

      
      
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "hello world!"
  4. your_name='Liu Jing'
  5. all_name="hello, "$your_name" !"
  6. other_name="hello, ${your_name} !"
  7. echo $your_name $all_name $other_name
  8. echo "end"
  9. linux@ubuntu:~/shell_test$ ./shell.sh
  10. hello world!
  11. Liu Jing hello, Liu Jing ! hello, Liu Jing !
  12. end

获取字符串长度

      
      
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. your_name='Liu Jing'
  4. echo ${#your_name}
  5. linux@ubuntu:~/shell_test$ ./shell.sh
  6. 8

提取子字符串

以下实例从字符串第  2 个字符开始截取  4 个字符:
       
       
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. your_name='Liu Jing'
  4. echo ${your_name:1:4}
  5. linux@ubuntu:~/shell_test$ ./shell.sh
  6. iu J

查找子字符串

查找字符 "a或 n" 的位置,注意: 脚本中 "`" 是反引号,而不是单引号 "'",不要看错了哦。

        
        
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. your_name="Liu Jing is a great man!"
  4. echo `expr index "$your_name" an`
  5. linux@ubuntu:~/shell_test$ ./shell.sh
  6. 7


Shell 注释

以"#"开头的行就是注释,会被解释器忽略。

sh里没有多行注释,只能每一行加一个#号。只能像这样:


#--------------------------------------------
# 这是一个注释
# slogan:学的不仅是技术,更是梦想!
#--------------------------------------------
##### 用户配置区 开始 #####
#
#
# 这里可以添加脚本描述信息
# 
#
##### 用户配置区 结束  #####  

如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?

每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。

      
      
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. abc(){
  4. your_name=(liujing xiaoniu xiaohu kurong c++)
  5. echo ${your_name[@]}
  6. echo ${your_name[1]} ${your_name[4]}
  7. echo ${#your_name[@]}
  8. echo ${#your_name[1]}
  9. }
  10. my_name[0]=liu
  11. my_name[1]=jing
  12. my_name[10]=haha
  13. echo ${my_name[@]}
  14. echo ${my_name[1]} ${my_name[10]}
  15. echo ${#my_name[*]}
  16. echo ${#my_name[10]}
  17. linux@ubuntu:~/shell_test$ ./shell.sh
  18. liu jing haha
  19. jing haha
  20. 3
  21. 4
可以看到abc()函数内的内容并没有输出

Shell 传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为: $nn 代表一个数字,  $0 为执行的文件,$1 为执行脚本的第一个参数,$2 为执行脚本的第二个参数,以此类推……
    
    
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "Shell args test!"
  4. echo "arg0: $0"
  5. echo "arg1: $1"
  6. echo "arg2: $2"
  7. echo "arg3: $3"
  8. linux@ubuntu:~/shell_test$ ./shell.sh jing love shell
  9. Shell args test!
  10. arg0: ./shell.sh
  11. arg1: jing
  12. arg2: love
  13. arg3: shell

另外,还有几个特殊字符用来处理参数:

参数处理 说明
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
例:

   
   
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "Shell args test!" #Shell args test!
  4. echo "arg2: $2" #arg2: love
  5. echo "arg count: $#" #arg count: 3
  6. echo "$*" #jing love shell
  7. echo "$$" #8003
  8. echo "$!" #空
  9. echo "$@" #jing love shell
  10. echo "$-" #hB
  11. echo "$?" #0
  12. linux@ubuntu:~/shell_test$ ./shell.sh jing love shell
  13. Shell args test!
  14. arg2: love
  15. arg count: 3
  16. jing love shell
  17. 8003
  18. jing love shell
  19. hB
  20. 0

$* 与 $@ 区别:

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。
实例证明:
   
   
  1. linux@ubuntu:~/shell_test$ cat shell.sh
  2. #!/bin/bash
  3. echo "Shell args test!"
  4. echo "$*"
  5. echo "$@"
  6. echo "---- \$* ----"
  7. for i in "$*"; do
  8. echo $i
  9. done
  10. echo "---- \$@ ----"
  11. for i in "$@"; do
  12. echo $i
  13. done
  14. linux@ubuntu:~/shell_test$ ./shell.sh jing love shell
  15. Shell args test!
  16. jing love shell
  17. jing love shell
  18. ---- $* ----
  19. jing love shell
  20. ---- $@ ----
  21. jing
  22. love
  23. shell

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

shell 教程一:变量,字符串,传参 的相关文章

  • 书店漫游记录

    目录 北京 上海 杭州 天津 南京 青岛 深圳 香港 北京 万圣书园 豆瓣书店 野草书店 三联韬奋书店 xff08 三里屯 xff09 三联韬奋书店 xff08 美术馆 xff09 Pageone xff08 北京坊 xff09 Pageo
  • C++ std::string 不可初始化为NULL及基本用法

    偶然看到一个问题 xff0c 顺便总结一下std string C 43 43 basic string S construct null not valid stackoverflow例子 std string 字符串不可以初始化为NUL
  • 通过查看端口状态查看mongodb是否已经启动

    LINUX环境下 xff0c 可以通过查看端口27017的状态查看mongod是否已经启动 netstat lanp span class hljs string grep 34 span span class hljs number 27
  • linux & windows C++开发差异

    新手注意事项 1 文件与目录的大小写以及路径分隔符的差别 windows下不区分大小写 xff0c 路径分隔符一般使用 xff1b linux下区分大小写 xff0c 路径分隔符使用 2 itoa 函数在linux下并不存在 所以使用类似s
  • 深度学习结合SLAM的研究思路/成果整理之(一)使用深度学习方法替换SLAM中的模块

    整理了部分近两年深度学习结合SLAM的一些研究成果 xff08 参考知乎帖子https www zhihu com question 66006923 和泡泡机器人公众号 xff0c 附上论文链接和已找到的源代码 数据集链接 xff0c 大
  • 深度学习与自动驾驶领域的数据集(KITTI,Oxford,Cityscape,Comma.ai,BDDV,TORCS,Udacity,GTA,CARLA,Carcraft)

    http blog csdn net solomon1558 article details 70173223 Torontocity HCI middlebury caltech 行人检测数据集 ISPRS航拍数据集 mot challe
  • 又一遍……ORB_SLAM2+ZED相机(SDK2.2.1)+CUDA9.0+ROS Kinetic 安装测试 some tips

    很久没碰过ORB SLAM2了 xff0c 今天有需要 xff0c 再来试一遍 xff5e ORB SLAM2的github链接 1 安装ORB SLAM2的依赖库 按照链接一步一步来就可以 eigen直接用命令安装就可以 sudo apt
  • MacOS设置终端代理

    前言 国内的开发者或多或少都会因为网络而烦恼 xff0c 因为一些特殊原因有时候网络不好的时候需要使用代理才能完成对应的操作 原来我一直都是使用斐讯路由器然后刷了梅林的固件 xff0c 直接在路由器层面设置转发代理 xff0c 把一些国内网
  • Linux SIGPIPE信号产生原因与解决方法

    TCP 四次握手 产生SIGPIPE的原因 SIGPIPE信号产生的原因 xff1a 简单来说 xff0c 就是客户端程序向服务器端程序发送了消息 xff0c 然后关闭客户端 xff0c 服务器端返回消息的时候就会收到内核给的SIGPIPE
  • Homebrew最新安装--解决安装超时的问题

    更新 2021 1 20 可以直接用下边的脚本进行安装 bin zsh c span class token string 34 span class token variable span class token variable spa
  • TIDB使用时的注意点笔记

    场景 xff1a 虽然TiDB号称完全兼容MySQL 5 7 协议 MySQL 5 7 常用的功能及语法 xff0c 但是其与MySQL数据库仍然存在一些差异 xff0c 可能会导致下游TiDB环境故障 以下是我们使用TiDB时需要重点关注
  • SpringBoot结合MyBatis-Plus快速CRUD笔记

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 DTO amp DO二 示例1 定义Controller2 定义Service和实现3 定义Mapper4 前端访问测试
  • Java最佳实践笔记

    一 常量定义最佳实践 span class token keyword public span span class token keyword final span span class token keyword class span
  • 聊聊JavaSPI

    文章目录 前言一 SPI 示例二 SPI原理与双亲委派机制1 MySQL Driver2 DataX 插件的热插拔也是破坏双亲委派的一种3 Tomcat类加载同样是破坏了双亲委托 总结参考文章 前言 SPI 全称为 Service Prov
  • 实时平台开发笔记

    文章目录 一 背景二 功能模块划分1 作业台主要功能任务生命周期 2 任务列表主要功能 3 项目管理4 模板管理5 UDF管理 三 问题解决1 kerberos认证问题2 分布式锁解决Job名称冲突问题3 自定义线程池用以监控线程运行情况4
  • 二叉树快速拾遗笔记

    文章目录 前言二叉树前中后序遍历反转二叉树二叉树最大最小深度对称二叉树判断是否是平衡二叉树构造最大二叉树前序遍历打印二叉树二叉树层次遍历二叉树中和为某一值的路径总结 前言 二叉树基础内容拾遗 xff0c 使用递归解题三部曲 xff1a 找整
  • 链表拾遗笔记

    文章目录 1 反转单链表2 打印单链表3 O 1 删除指定节点4 双指针法求求链表倒数第k个节点5 判断链表是不是有环6 合并两个单链表7 删除链表中的重复节点7 实现一个单链表总结 提示 xff1a 以下是本篇文章正文内容 xff0c 下
  • 经典的排序算法拾遗笔记

    文章目录 选择排序插入排序冒泡排序快速排序二分查找交换两个位置的元素 总结 各种排序算法复杂度总结如下 xff1a 选择排序 分析 xff1a span class token comment 选择排序 4 3 5 1 4 3 5 1 le
  • BGP基本配置与总结

    使用BGP路由协议的意义是将自治系统中的路由通告到外部 xff0c 而自治系统内使用的是IGP路由 xff0c 这就是为什么内部BGP管理距离这么高 xff0c 而外部BGP管理距离这么低的原因了 1 建立BGP邻居的前提 xff1a 在B
  • Flink常见报错持续更新

    Flink 1 10 1 Job因为没有可用的任务slot而失败 2021 06 24 12 50 36 433 INFO org apache flink runtime executiongraph ExecutionGraph Job

随机推荐

  • IDEA一劳永逸设置默认maven

    前言 每次发现新建项目的时候maven设置便自动重置是不是很恼火 xff0c 别急这里记录下一劳永逸的办法 提示 xff1a 以下是本篇文章正文内容 xff0c 下面案例可供参考 一 设置 示例 xff1a IntelliJ IDEA 20
  • 远程debug docker中应用

    前言 最近在研究kylin相关的内容 xff0c 采用官方提供的docker化一键部署的方式来进行 xff0c 作为远程服务本地debug的原理是相通的 xff0c 这里记录下来以便参考 提示 xff1a 以下是本篇文章正文内容 xff0c
  • Kylin接入外部Jdbc Mysql数据源

    前言 Kylin目前不仅仅支持Hive作为数据源构建cube xff0c 也可以支持使用外部jdbc作为数据源进行构建 xff0c 比如使用MySQL数据源的时候会让我们下载sqoop安装包 xff0c 本质上是使用sqoop全量同步我们要
  • SpringBoot有关数组对象转JSON

    文章目录 前言一 数据的插入二 查询数据1 插入数据2 查询数据 总结 前言 比如 xff0c 有个List lt AlarmInfo gt 对象需要存储到mysql中 xff0c 我们可以存储为varchar类型 xff0c 也可以存储为
  • 分页中遇到的一个传值问题

    文章目录 前言一 传入Integer值参数二 传入String值参数 前言 目的 xff1a 在前端传入一个参数对所选的结果进行分页过滤 xff0c 这应该是非常常见的一个需求吧 xff0c 但是如何传Integer值使用mybatis p
  • Python2.7升级版本记录

    文章目录 前言一 环境二 升级步骤1 安装各类依赖库2 编译3 编译安装4 添加软连接5 修改yum安装6 升级pip7 验证 参考 前言 python2 x版本已经废弃了 xff0c 有些软件安装的是会遇到如下提示 xff0c Sorry
  • MySQL笔记

    MySQL Version 5 7 25 一 常见面试问题汇总 1 select for update会锁表还是锁行 如果是纯select是不会加锁的 xff0c 但是这里会加锁 xff0c 而且还是悲观锁 xff0c 但是具体锁表还是锁行
  • mybatis-plus最好用的逻辑删除

    文章目录 前言一 逻辑删除1 添加全局配置2 设置实体中的字段 总结 前言 为了防止人为的因素导致误删除无法恢复的情况所以我们需要逻辑意义上的删除 xff0c 而通常最简便的方式就是打标记 xff0c 这个步骤可以由mybatis plus
  • IDEA Git常用操作

    前言 Git的操作可以使用命令行 xff0c 当然为了偷懒熟练使用IDEA的git未尝不是一个好办法 xff01 一 当前修改的分支想要暂存怎么办 xff1f 这个需要是因为当前修改的分支还没有修改完 xff0c 突然有另外的需求需要去处理
  • Ubuntu14.04安装build-essential失败,包依赖问题如何解决?

    正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 有一些软件包无法被安装 如果您用的是 unstable 发行版 xff0c 这也许是 因为系统无法达到您要求的状态造成的 该版本中可能会有一些您需要的软件 包尚未
  • 关于需求沟通的一点思考

    作为一名程序员 xff0c 可能会来自各方的需求沟通问题 xff0c 而且更多的时候是横插进来的任务 xff0c 每个人都说这个任务优先级高 xff0c 尽快做 xff0c 是不是有点焦头烂额了 xff0c 马上就开始啪啪敲代码了吗 xff
  • Go同目录下多个main声明会导致编译失败的问题

    问题 xff1a Go同目录下多个main声明会导致编译失败的问题 main redeclared in this block 表示在同级目录下main重复声明 xff0c 在学习中可以依照不同的文件夹进行分割 xff0c 也可以按照如下方
  • 嵌入式debian没有lsusb命令解决

    问题 bash lsusb command not found 解决
  • Python学习笔记-PyQt6状态栏

    QMainWindow有自带的状态栏 xff0c 可以通过statusBar 方法获取自身的状态栏 xff0c 或者通过实例化QStatusBar类 xff0c 然后使用QMainWindow setStatusBar 方法将状态栏添加到主
  • 未完成的IT路停在回车键---2014年末总结篇

    时间都去哪儿了 xff1f 一晃而过 xff0c 越来越能体会到这个词的真实感 特别是过了二十岁 xff0c 这种感觉越来越深刻 xff0c 越来越强烈 xff0c 犹如小编做公交车的时候一直向后排排倒的香樟树 xff0c 还记得有首歌叫时
  • 这一次,VR离我们真的很近

    从高考作文开始 今年号称是VR元年 xff0c 虽然目前VR还没能像手机一样走进千家万户 xff0c 但关于VR设备的关讨论是层出不穷 而今年高考 xff0c 浙江省的作文题就与VR相关 网上购物 视频聊天等在我们生活中越来越普及 有人预言
  • 补.从零开始学习C语言--scanf的%c前为什么加空格

    include lt stdio h gt int main void int i char ch scanf 34 d 34 amp i scanf 34 c 34 amp ch 这行的 C前有个空格 printf 34 i 61 d n
  • svn status 返回值详解

    转http blog linuxphp org archives 652 svn 是在提交前查看本地文本和版本库里面的文件的区别 返回值有许多种具体含义如下 xff1a url 61 L abc c svn已经在 svn目录锁定了abc c
  • ubuntu杀毒软件clamAV运维笔记

    1 安装 xff1a apt get install clamav 2 守护进程安装 xff1a apt get install clamav daemon 3 更新病毒库 xff1a freshclam 或手动下载安装 cvd文件 备注
  • shell 教程一:变量,字符串,传参

    一 xff0c hello shell strong span class pln style color rgb 72 72 76 vi hello span span class pun style color rgb 147 161