关于shell脚本的一些容易混淆的概念

编程入门 行业动态 更新时间:2024-10-23 10:29:28

关于shell<a href=https://www.elefans.com/category/jswz/34/1771291.html style=脚本的一些容易混淆的概念"/>

关于shell脚本的一些容易混淆的概念

  1. $@和$*的区别

[lf@x201t~]$vim my_fun.sh

#!/bin/bash

# $@ and $* 

my_fun (){

    echo "$#"

}


echo 'the number of parameter in "$@"   is'    $(my_fun  "$@")

echo 'the number of parameter in $@      is'    $(my_fun  $@)

echo 'the number of parameter in "$*"     is'     $(my_fun  "$*")

echo 'the number of parameter in $*        is'     $(my_fun  $*)

~                                                     


[lf@x201t ~]$ sh a.sh p1 "p2 p3" p4

the number of parameter in "$@" is 3  

the number of parameter in $@ is 4

the number of parameter in "$*" is 1

the number of parameter in $* is 4

看出区别了吗?关键  $@ 靠谱一点


2.  关于 > 和 <

[lf@x201t ~]$ cat     <file     >file.bak

[lf@x201t ~]$ cat   file;cat   file.bak 

this is a test

this is a test

[lf@x201t ~]$ cat    <file       >file

[lf@x201t ~]$ cat    file

[lf@x201t ~]$                            =====> 这行输出是空的,文件  file 已经没内容了 

为什么在最后 cat 看不到 file 文件的内容了呢?

这是因为文件 file 这时真的是个空文件。 why???

因为 IO重定向中,标准输出是要先准备好,才会从标准输入读入到标准输出。是不是有点绕。

就像接力赛中,传递接力棒一样的道理;你没看到接棒的人,你肯定不会把接力棒送出去一样。

所以, cat   <file    >file 命令中, > 会先把文件 file 清空,之后 才会执行 > file;结果就是空空。


3. for 循环中 变量的取值方式

    a.   从一组字符串中取值

    for  var     in    one    two    three   four   five 

    do

         echo    ****************************

         echo   '$var   is '    $var

    done


    b.  从位置变量中取值 

    for    var;do

    do

         echo  '-----------------------------'

         echo   '$var   is '    $var

    done

     

    c. 从累计变化的格式中取值

  

    #!/bin/bash 

    for    ((var=1;var<=10;var++))

    do

         echo   ------------------------ 

        echo   '$var   is '    $var

    done

 

  d.  从命令替换中取值  

  #!/bin/bash

  for   var   in   $(cat    file.txt)

  do

       echo   ------------------------ 

       echo   '$var   is '    $var

 done


转载于:

更多推荐

关于shell脚本的一些容易混淆的概念

本文发布于:2024-02-11 03:49:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1678967.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:脚本   概念   shell

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!