码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux Shell 命令行-02-var 变量


    拓展阅读

    linux Shell 命令行-00-intro 入门介绍

    linux Shell 命令行-02-var 变量

    linux Shell 命令行-03-array 数组

    linux Shell 命令行-04-operator 操作符

    linux Shell 命令行-05-test 验证是否符合条件

    linux Shell 命令行-06-flow control 流程控制

    linux Shell 命令行-07-func 函数

    linux Shell 命令行-08-file include 文件包含

    linux Shell 命令行-09-redirect 重定向

    定义

    • 变量名和=之间不能有空格
    • 必须以 [a-zA-Z] 开头,变量名可以包含_
    • 不能包含标点符号和关键字
    my_name="houbinbin"

      重新定义

      已定义的变量可以重新定义

      my_name="houbinbin"
      my_name="ryo"
      • 1

      使用

      • use_var.sh
      my_name="houbinbin"
      echo $my_name
      • 1
      • 运行
      houbinbindeMacBook-Pro:shell houbinbin$ vi use_var.sh
      houbinbindeMacBook-Pro:shell houbinbin$ /bin/sh use_var.sh
      houbinbin
      • 1
      • 2

      只读

      readonly变量不能被更改。

      • readonly_var.sh
      # !/bin/bash
      
      my_name="houbinbin"
      readonly my_name
      
      my_name="new name"
      • 1
      • 2
      • 3
      • 4
      • 5
      • 运行
      houbinbindeMacBook-Pro:shell houbinbin$ vi readonly_var.sh
      houbinbindeMacBook-Pro:shell houbinbin$ /bin/sh readonly_var.sh
      readonly_var.sh: line 4: my_name: readonly variable
      • 1
      • 2

      删除

      使用 unset 来删除定义的变量。

      • unset_var.sh
      #!/bin/bash
      
      my_name="ryo"
      unset my_name
      echo ${my_name}
      • 1
      • 2
      • 3
      • 4
      • 运行
      houbinbindeMacBook-Pro:shell houbinbin$ vi unset_var.sh
      houbinbindeMacBook-Pro:shell houbinbin$ /bin/sh unset_var.sh
      
      houbinbindeMacBook-Pro:shell houbinbin$
      • 1
      • 2
      • 3

      特殊变量

      命令描述
      $0当前脚本的文件名
      $n传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
      $#传递给脚本或函数的参数个数。
      $*传递给脚本或函数的所有参数。
      $@传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
      $?上个命令的退出状态,或函数的返回值。
      $$当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
      • special_var.sh
      #!/bin/bash
      echo "File Name: $0"
      echo "First Parameter : $1"
      echo "First Parameter : $2"
      echo "Quoted Values: $@"
      echo "Quoted Values: $*"
      echo "Total Number of Parameters : $#"
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 运行
      houbinbindeMacBook-Pro:shell houbinbin$ vi special_var.sh
      houbinbindeMacBook-Pro:shell houbinbin$ /bin/sh special_var.sh hello world my
      File Name: special_var.sh
      First Parameter : hello
      First Parameter : world
      Quoted Values: hello world my
      Quoted Values: hello world my
      Total Number of Parameters : 3
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      $* 和 $@

      $* 和 $@ 都表示传递给函数或脚本的所有参数,不被""包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。

      但是当它们被""包含时,$* 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;$@ 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

      • diff_demo.sh
      #!/bin/bash
      
      # Author:houbinbin
      
      echo "display of \$* "
      
      for i in "$*";
      do
          echo $i
      done
      
      echo "display of \$@ "
      for i in "$@";
      do
          echo $i
      done
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 运行
      houbinbindeMacBook-Pro:shell houbinbin$ vi diff_demo.sh
      houbinbindeMacBook-Pro:shell houbinbin$ /bin/sh diff_demo.sh 1 2 3 4
      display of $*
      1 2 3 4
      display of $@
      1
      2
      3
      4
      houbinbindeMacBook-Pro:shell houbinbin$
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9

      参考资料

      https://www.runoob.com/linux/linux-shell.html

      本文由博客一文多发平台 OpenWrite 发布!

    • 相关阅读:
      重读《纳瓦尔宝典》精彩语录及感悟篇(三)
      SSH客户端工具——PuTTY(1)
      推荐系统实现原理介绍
      Redis设计与实现
      QT 5.8
      基于B/S架构的合同信息管理系统(Java+Web+MySQL)
      Real-Time Rendering——15.2 Outline Rendering轮廓渲染
      几行代码就可以把系统高崩溃;
      dpdk 将arp和icmp数据包交给kni 实现ping
      市级政务云平台建设与运营解决方案
    • 原文地址:https://blog.csdn.net/ryo1060732496/article/details/136599015
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号