shell脚本获取参数&执行在线命令

举报
Nick Qiu 发表于 2020/11/23 22:31:26 2020/11/23
【摘要】 场景介绍本文介绍以下2个知识点,为后后续在工作过程中安装一键安装脚本打好基础:shell 脚本中经常需要传入一些命令参数,如 cmd -a abc -b -c dddd或者,cmd -name nick -disable,本文介绍如前面列子中的参数在脚本中如何提取命令;如gitlab或者github上面有一个shell脚本,如何在线的执行git服务器上的shell文件。提取命令办法按位置获取...

场景介绍

本文介绍以下2个知识点,为后后续在工作过程中安装一键安装脚本打好基础:

  • shell 脚本中经常需要传入一些命令参数,如 cmd -a abc -b -c dddd或者,cmd -name nick -disable,本文介绍如前面列子中的参数在脚本中如何提取命令;

  • 如gitlab或者github上面有一个shell脚本,如何在线的执行git服务器上的shell文件。

提取命令办法

按位置获取

如下shell脚本中传入的参数依次值如下:

echo "第一个参数:"$1echo "第二个参数:"$2echo "第三个参数:"$3

getopts获取

如脚本getopts.sh

while getopts 'a:bcd:' OPT; do    case ${OPT} in      a)        echo "选项-a已经生效"        echo "选项-a是可以带参数的,参数值为:"${OPTARG}        ;;      b)        echo "选项-b已经生效"        echo "选项-b是不需要参数的"        ;;      c)        echo "选项-c已经生效"        echo "选项-c是不需要参数的"        ;;      d)        echo "选项-d已经生效"        echo "选项-d是可以带参数的,参数值为:"${OPTARG}        ;;      *)        echo "无效的参数"        ;;    esacdone

执行./getopts.sh -a dd -b,打印如下结果

选项-a已经生效选项-a是可以带参数的,参数值为:dd选项-b已经生效选项-b是不需要参数的

遍历获取

如脚本for.sh

# ./for.sh -a --banana blalawhile true; do    case "$1" in      -a | --apple)          echo "I have an apple!"          shift          ;;      -b | --banana)          echo "I have a banana,banana is $2"          shift 2          ;;      -c | --cherry)          case $2 in            '')                echo "I have a cherry!"                shift 2                ;;            *)                echo "I have a cherry!It is $2"                shift 2                ;;          esac          ;;      -d)          echo "I have a dog!"          shift          ;;      --)          shift          break          ;;      *)          echo "get parameters success.!"          # exit 1          break          ;;    esacdoneecho "end of get parameters success."
  • 执行命令测试

nick@nicks-MacBook-Pro  ~/Desktop/study/notes-everything/docs/Linux/content   master ●  ./for.sh -a --banana blalaI have an apple!I have a banana,banana is blalaget parameters success.!end of get parameters success.

在线执行shell脚本

有时候shell脚本可以放在http页面上,不用download,可以直接执行。

  • 一般方法:

curl http://XXX.com/xx/xx.sh | bash
  • 带参数

curl -s http://XXX.com/xx/xx.sh | bash -s arg1 arg2
  • 使用带有具名参数的脚本

curl -L http://XXX.com/xx/xx.sh | bash -s -- -x abc -y xyz


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。