• 今天遇到个let: not found


    View Code
     1 #!/bin/bash
     2 #arglist.h
     3 #2012-06-14
     4 
     5 E_BADARGS=65
     6 
     7 if [ ! -n "$1" ]
     8 then
     9   echo "Usage: `basename $0` argument1 argument2 etc."
    10   exit $E_BADARGS
    11 fi
    12  echo
    13 
    14 index=1
    15 #注意
    16 echo "Listing args with \"\$*\":"
    17 for arg in "$*" # ""
    18 do
    19     echo "Arg #$index = $arg"
    20     let "index+=1"
    21 done
    22 
    23 echo "Entire arg list seen as single word."
    24 echo
    25 
    26 index=1
    27 
    28 echo "Listing args with\"\$@\":"
    29 for arg in "$@"
    30 do
    31      echo "Arg #$index = $arg"
    32      let "index+=1"
    33 done
    34 echo "Arg list seen as seperate words."
    35 
    36 echo
    37 
    38 index=1
    39 echo "Listing args with \$* (unquoted):"
    40 for arg in $*
    41 do
    42   echo "Arg #$index = $arg"
    43   let "index+=1"
    44 done
    45 echo "Arg list seen as separate words."
    46 exit 0

    调试的时候直接用了 

    sh -x arglist.sh t1 t2 t3 t4 t5 t6 t7

    结果就悲催了:

    + E_BADARGS=65
    + [ ! -n t1 ]
    + echo
    
    + index=1
    + echo Listing args with "$*":
    Listing args with "$*":
    + echo Arg #1 = t1 t2 t3 t4 t5 t6 t7
    Arg #1 = t1 t2 t3 t4 t5 t6 t7
    + let index+=1
    arglist.sh: 20: arglist.sh: let: not found
    + echo Entire arg list seen as single word.
    Entire arg list seen as single word.
    + echo
    
    + index=1
    + echo Listing args with"$@":
    Listing args with"$@":
    + echo Arg #1 = t1
    Arg #1 = t1
    + let index+=1
    arglist.sh: 32: arglist.sh: let: not found
    + echo Arg #1 = t2
    Arg #1 = t2
    + let index+=1
    arglist.sh: 32: arglist.sh: let: not found
    + echo Arg #1 = t3
    Arg #1 = t3
    + let index+=1
    arglist.sh: 32: arglist.sh: let: not found
    + echo Arg #1 = t4
    Arg #1 = t4
    + let index+=1
    arglist.sh: 32: arglist.sh: let: not found
    + echo Arg #1 = t5
    Arg #1 = t5
    + let index+=1
    arglist.sh: 32: arglist.sh: let: not found
    + echo Arg #1 = t6
    Arg #1 = t6
    + let index+=1
    arglist.sh: 32: arglist.sh: let: not found
    + echo Arg #1 = t7
    Arg #1 = t7
    + let index+=1
    arglist.sh: 32: arglist.sh: let: not found
    + echo Arg list seen as seperate words.
    Arg list seen as seperate words.
    + echo
    
    + index=1
    + echo Listing args with $* (unquoted):
    Listing args with $* (unquoted):
    + echo Arg #1 = t1
    Arg #1 = t1
    + let index+=1
    arglist.sh: 43: arglist.sh: let: not found
    + echo Arg #1 = t2
    Arg #1 = t2
    + let index+=1
    arglist.sh: 43: arglist.sh: let: not found
    + echo Arg #1 = t3
    Arg #1 = t3
    + let index+=1
    arglist.sh: 43: arglist.sh: let: not found
    + echo Arg #1 = t4
    Arg #1 = t4
    + let index+=1
    arglist.sh: 43: arglist.sh: let: not found
    + echo Arg #1 = t5
    Arg #1 = t5
    + let index+=1
    arglist.sh: 43: arglist.sh: let: not found
    + echo Arg #1 = t6
    Arg #1 = t6
    + let index+=1
    arglist.sh: 43: arglist.sh: let: not found
    + echo Arg #1 = t7
    Arg #1 = t7
    + let index+=1
    arglist.sh: 43: arglist.sh: let: not found
    + echo Arg list seen as separate words.
    Arg list seen as separate words.
    + exit 0

    百度了一下,大概是因为:

    /bin/sh指向了dash而不是bash,dash不支持let命令。

    所以改用,

    bash -x arglist.sh t1 t2 t3 t4 t5 t6 t7

    结果就OK了,若非是用sh -x,还遇不到这个小问题,呵呵。

    很水的东东,私录一下。

  • 相关阅读:
    Promise 解决回调地狱问题
    同步 异步 API 区别
    静态资源 读取方法
    路由
    HTTP 协议 get post 请求方式
    linux 查看日志
    putty完全使用手册--多窗口---git提交---连接数据库--自动日志显示
    strpos 返回0时 ,比较false 不能加单引号
    禁止使用test类的就是禁止使用本来的$this对象.可以调用父类的对象
    大D实例化model-->调用自定义类方法,大M调用原声model方法
  • 原文地址:https://www.cnblogs.com/vman/p/2549818.html
Copyright © 2020-2023  润新知