Linux - Shell - 参数获取
概述
- 参数
- 准备重构一版...
背景
- 复习一下 shell 脚本的参数获取
场景
- os
- centos7
- os
1. 参数: 基础
- 概述
- 简单描述 参数
1. 获取参数
获取 第一个 参数
获取参数
- 使用 ${num} 获取参数
- ${1} 获取 第一个参数
代码
#!/bin/bash
var1=${1}
echo ${var1}
其他
- 可以尝试
${2}, ${3}等获取后续参数 - 默认情况下, 如果参数不足, echo 不会报错, 其他命令, 需要验证
- 可以尝试
2. 获取多个参数
问题1: 获取多个参数
- 一个一个获取参数, 如果参数多了, 会不会很麻烦
解决
- 可以一次获得 所有参数
方案1:
$*$*- 一次获取所有参数
代码
#!/bin/bash
var1=$*
echo ${var1}
问题2: 我分开去参数
所有参数
$*获取到的参数, 是所有参数排在一起的
需要
- 我想单独获得 某个参数
解决
- 思路1: 你知道要找 第几个 参数
- 使用 ${num}
- 思路2: 什么? 你不知道是第几个, 但是你就知道要 什么样的参数
- 转化为 数组
- 暂时不推荐
- 转化数组, 我还不会
- 转化后的数组, 不知道 元素下标的话, 需要循环, 数组的操作, 我还是不会
- 暂时不推荐
- 转化为 数组
- 思路3: 使用
$@
- 思路1: 你知道要找 第几个 参数
方案2:
$@所有参数
- 多在 循环时 使用
代码
#!/bin/bash
for word in "$@"
do
echo ${word}
done
3. 获取最后一个参数
问题: 最后一个参数
- 最后一个
- 我就想获得 最后一个参数
- 最后一个
解决
#!/bin/bash # 假设参数是 1 2 3
# 最后一个参数, ${3}
var1=${#}
echo $var1
echo ${!var1} # 倒数 第二个参数, ${2}
var2=$[${#}-1]
echo $var2
echo ${!var2}
问题: 手滑没加参数
问题
- 忽然手滑, 没有加参数
结果
- 第一段直接打印出了 脚本名
4. 获取脚本名
脚本名
- ${0}
- 打印 ${0} 即可看到
- ${0}
问题
./<script>- 显示
./<script>
- 显示
bash <script>- 显示
<script>
- 显示
source <script>- 显示 -bash
- ????
- 显示 -bash
ps
ref
- 学习 bash
- Shell 传递参数
- Linux获取最后一个参数(参数统计)
疑问
- 获取脚本名称如果这么不稳定, 那是否有 稳定的方法 呢?
后续尝试下 获取 选项
Linux - Shell - 参数获取的更多相关文章
- Linux Shell参数替换
Linux Shell参数替换 2013-06-03 10:01 by 轩脉刃, 1816 阅读, 0 评论, 收藏, 编辑 Bash中的符号的作用是参数替换,将参数名替换为参数所代表的值.对于 来说 ...
- linux shell中获取mongodb最大连接数、内存使用情况等
前两天接到了一个新的需求,需要在linux shell脚本中监控到mongodb最大连接数.内存使用情况等. 但是我对于linux shel很不了解,只是会一些简单常用的linux的操作而已,只要一顿 ...
- 模块 sys shell参数获取
sys 参数获取 获取参数 sys模块是与python解释器交互的一个接口 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) ...
- Linux Shell 如何获取参数
$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表 $* 是以一个单字符串显示 ...
- Linux Shell参数扩展(Parameter Expansion)
Shell Command Language在线文档: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html ...
- linux shell 脚本获取和替换文件中特定内容
1.从一串字符串中获取特定的信息 要求1:获取本机IP:menu.lst为系统镜象的IP配置文件,需要从中获取到本机IP信息(从文件获取信息) timeout title live find --se ...
- linux shell 命令获取字符串/文件的MD5值
获取字符串的MD5值: 字符串“hello”的MD5: $ echo -n 'hello'|md5sum|cut -d ' ' -f1 得到的MD5值: 5d41402abc4b2a76b9719d9 ...
- linux shell脚本常用语句
linux shell 指令 诸如-d, -f, -e之类的判断表达式: 文件比较运算符-e filename 如果 filename存在,则为真 [ -e /var/log/syslog ]-d ...
- linux在shell date获取时间的相关操作
获得当天的日期 date +%Y-%m-%d 输出: 2011-07-28 将当前日期赋值给DATE变量DATE=$(date +%Y%m%d) 有时候我们需要使用今天之前或者往后的日期,这时可以使用 ...
随机推荐
- 声明式服务调用:Spring Cloud Feign
最近在学习Spring Cloud的知识,现将声明式服务调用:Spring Cloud Feign 的相关知识笔记整理如下.[采用 oneNote格式排版]
- LeetCode 面试题 02.07. 链表相交
题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists-lcci/ 给定两个(单向)链表,判定它们是否相交并返回交 ...
- 【MVC+EasyUI实例】对数据网格的增删改查(上)
前言 此案例是针对之前做的一个小例子的后台框架的修改,从以前的三层框架改为现在的MVC框架,也是做了一次MVC和EasyUI的结合,分为2篇文章来阐述. 界面如下: 点击"添加"按 ...
- antd-design
1. 有mock 时候进度条展示不正常
- Qt的qDebug()改写为cout
经常用c++,qDebug()用的不习惯,将其改为cout,并且为了方便调试,还添加了文件名及行号. 代码如下: // __FILE__文件名,__LINE__行号,如果想看时间还可以添加__TIME ...
- redis的一些常见面试题
1 .在项目中缓存是如何使用的? 2.为啥在项目里要用缓存呢? 用缓存,主要用途,高性能和高并发 高性能: 场景举例:假如有这么一个操作,用户发起请求,操作数据库,查出结果,耗时600ms,然后这个结 ...
- Magento2 自定义生成日志函数
/** * @param $info * @param string $file * @return bool */ public function logger($info, $file = &qu ...
- PhpCms V9调用指定栏目子栏目文章的方法
PhpCms V9调用指定栏目子栏目文章的方法 第一种,直接写父类id {pc:content action="lists" catid="父类id" num= ...
- spring boot的一个小项目小型进销存系统
项目所需的依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...
- 怎么解决MySQL密码问题
mysql 如何设置远程连接 听语音 原创 | 浏览:2726 | 更新:2019-01-22 17:32 1 2 3 4 5 6 7 分步阅读 mysql默认是不允许被远程连接的,只有本地机器才能连 ...