zoukankan      html  css  js  c++  java
  • shell-的特殊变量-难点理论

    一:shell的特殊变量-难点理论
      1. $*和$@的区别例子
         $* 将所有的命令行所有参数视为单个字符串,等同于“$1$2$3”
         $@ 将命令行每个参数视为单独的字符串,等同于"$1" "$2" "$3"。这是将参数传递给其他程序的最佳方式,因为他会保留所有内嵌在每个参数里的任何空白。
       实例:

    [root@1-241 scripts]# set -- "I am " handsome oldboy.                #传入三个参数
    [root@1-241 scripts]# echo $#                                                                  #现在有三个参数
    3
    [root@1-241 scripts]# for i in $*; do echo $i;done                          #循环打印这些参数,用$*,无引号
    I
    am
    handsome
    oldboy.
    [root@1-241 scripts]# for i in $@; do echo $i;done                      #循环打印这些参数,用$@,无引号
    I
    am
    handsome
    oldboy.
    [root@1-241 scripts]# for i ; do echo $i;done                              #去掉in变量列表,相当于in “$@”
    I am
    handsome
    oldboy.
    [root@1-241 scripts]# for i in "$@"; do echo $i;done            #在有双引号的情况下,参数里引号内内容当做一个参数输出了,这才真正符合我们传入的参数需求,set  --  "I am" handsome oldboy.
    I am
    handsome
    oldboy.
    [root@1-241 scripts]# for i in "$*"; do echo $i;done           #加了双引号,$*表示一个字符串
    I am handsome oldboy.
    [root@1-241 scripts]# shift                                                              #用shift去掉第一个参数
    [root@1-241 scripts]# for i in "$@"; do echo $i;done        #再次打印只剩后面两个参数了
    handsome
    oldboy.
    [root@1-241 scripts]# for i in "$*"; do echo $i;done
    handsome oldboy.
    [root@1-241 scripts]# for i ; do echo $i;done
    handsome
    oldboy.
    

      

  • 相关阅读:
    Linux常用命令1
    Linux常用命令
    java的接口和抽象类区别
    字符串的全排列
    字符串的全组合
    Mysql范式
    同步 异步 阻塞 非阻塞概念区分
    死锁产生的条件以及解决方法
    Mysql存储引擎MyIsAM和InnoDB区别
    SLES documentation
  • 原文地址:https://www.cnblogs.com/scajy/p/12762329.html
Copyright © 2011-2022 走看看