zoukankan      html  css  js  c++  java
  • 今天遇到个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,还遇不到这个小问题,呵呵。

    很水的东东,私录一下。

  • 相关阅读:
    基于ZooKeeper和Thrift构建动态RPC调用
    菜鸡的Java笔记 api 文档
    菜鸡的Java笔记 第二十四
    菜鸡的Java笔记 第二十三
    菜鸡的Java笔记 第二十二
    菜鸡的Java笔记 实践
    Python 函数 参数传递
    python 函数的定义及调用语法,map 方法,函数嵌套递归
    java关键字
    菜鸡的Java笔记 第二十一 final 关键字
  • 原文地址:https://www.cnblogs.com/vman/p/2549818.html
Copyright © 2011-2022 走看看