bash脚本中传递命令行参数

----------------------------------------------
author: hjjdebug
date:   2023年 08月 06日 星期日 15:24:39 CST
descriptor: bash脚本中传递命令行参数
----------------------------------------------
原来bash 获取命令行选项是如此的简单, 只用一个for 后面随便一个参数就是命令行参数.
不相信? 看看下面代码:
$ cat 1.sh
#!/bin/bash  
for haha
do
    echo $haha
done

测试结果:

$ ./1.sh --help=short abcde 12345
--help=short
abcde
12345


我是从阅读configure 文件中得到这个知识的, 想看看它到底怎样传递的命令行参数,原来如此之简单.
我贴上一段configure 简化后的代码吧,
真正的configure 文件比它复杂百倍,千倍,但被这些干货挡着确实难看懂!

#! /bin/bash
for params
do
  case $params in
  *=?*) ac_optarg=`expr "X$params" : '[^=]*=\(.*\)'` ;;  // 提取选项值用 expr 命令
  *=)   ac_optarg= ;;
  *)    ac_optarg=yes ;;
  esac

  case $params in
  -help | --help | --hel | --he | -h)
    ac_init_help=long ;;
  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
    ac_init_help=recursive ;;
  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)        // 直接用*号来匹配任意字符
      ac_init_help=short
      echo "help is short"
      ;;
  esac
done


当然,至于说$1,$2,$3...代表第1,第2,第3参数,这个我是知道的, 但对于随便一个变量代表所有命令行参数,
用匹配的方法得到所需要的参数,还是在configure 文件中第一次看到.

你可能感兴趣的:(#,config,bash)