`

shell 取脚本 参数

阅读更多

  刚开始接触shel脚本,感觉语法很恶心,很容易出错(没有python那么容易写),不过用shell相关的命令的时候觉得很爽,

感觉功能很强大,总的来说,有时候用shell 还是很理想的方式,因为你要做这件事情,他是最方便的。这里介绍一些执行脚本得到参数的方式。我也是初学,总结一下。望大家补充!

 

1. 最简单的方式

 通过下面的代码大家应该就都明白了,如果不明白的话, 建议去看书吧。

 

#test1.sh

#!/bin/bash

if [ "$#" -lt 3 ] #判断一下参数的个数对不对
 then
       echo "need args"
       exit
fi

#输出第一个参数
echo $1
#输出第一个参数
echo $2
#输出第一个参数
echo $3

 

2.while +case 判断参数

 

while [ $# -gt 0 ]; do
    case $1 in
        -h|--help)
            print_help
            exit 0
            ;;  
        -V|--version)
            print_version
            exit 0
            ;;  
        -l|--listen)
            listening_address=$2
            shift 2
            ;;  
        -p|--port)
            lipo=$2
            shift 2
            ;;  
        -P|--protocol)
            proto=$2
            shift 2
            ;;  
        -v|--verbose)
            verbose=true
            shift
            ;;  
        --)
            shift
            break
            ;;
        *)
            echo "Internal Error: option processing error: $1" 1>&2
            exit 1
            ;;
    esac
done

 

 

 3.循环读取参数

 

从文件中读取数据
参数LINE表示行的内容,$file_name表示文件名称,该循环读取文件效率是非常高的,和cat相当。

有了上面的方法我们就可以对文件逐行操作,可以编写配置参数文件。

 

 

while read LINE

do
echo $LINE
done<$file_name
 

另一种:

list="aa bb cc dd"

set -- `echo $list`
for((i=1;i<5;i++))
do
echo $1
shift
done
 

      4.getopts 方式

 

经常用ls -al 等命令,如果想自己弄一个的话,getopts命令很好用

     例:#newdate 

if [ $# -lt 1 ] 
then 
date 
else 
while getopts mdyDHMSTjJwahr OPTION 
do 
case $OPTION 
in 
m) date '+%m ';; # Month of Year 
d) date '+%d ';; # Day of Month 
y) date '+%y ';; # Year 
D) date '+%D ';; # MM/DD/YY 
H) date '+%H ';; # Hour 
M) date '+%M ';; # Minute 
S) date '+%S ';; # Second 
T) date '+%T ';; # HH:MM:SS 
j) date '+%j ';; # day of year 
J) date '+%y%j ';;# 5 digit Julian date 
w) date '+%w ';; # Day of the Week 
a) date '+%a ';; # Day abbreviation 
h) date '+%h ';; # Month abbreviation 
r) date '+%r ';; # AM-PM time 
\?) echo "Invalid option $OPTION";; 
esac 
done 
fi 

    5. 循环遍历所有的参数

   for i in $@

do
echo $i
done

 

 

最后附上一篇挺全的文章:http://www.cnblogs.com/steven_oyj/archive/2010/06/01/1749007.html

 

分享到:
评论

相关推荐

    shell脚本实现云存储 s3 v4签名,并上传文件到云存储

    2、适用于云存储的开发过程中,作为一个调试工具,来验证接口和参数是否正确,在shell脚本中修改调试参数,灵活方便。也可用于搭建轻量级的应用环境。 3、我的测试环境是centos7,脚本依赖的命令都是centos系统自带...

    Shell脚本函数定义和函数参数

    一、Shell函数 本教程目前为止所有脚本都是从头到尾执行。...如果愿意,可在函数名前加上关键字function,这取决于使用者。 代码如下:function 函数名(){  command1  command2  …  commandN  

    Shell中特殊参数变量和特殊状态变量汇总

    $#:传给Shell脚本的参数个数 $0:当前Shell脚本名 $1:传递给Shell脚本的第1个参数,若没有则为空 $2:传递给Shell脚本的第2个参数,若没有则为空 $3:传递给Shell脚本的第3个参数,后续以此类推 ${10}:传递给...

    shell_examples:Shell脚本示例

    Shell示例和演示一个显示shell脚本示例的存储库。 目的是使用示例来演示壳如何表现和压缩一些假设。先决条件安装 为Shellcheck安装vscode扩展code --install-extension timonwong.shellcheck外壳帮助取决于运行的...

    PHP教程之PHP中shell脚本的使用方法分享

    作为命令语言,它交互式解释和执行用户输入...如果仅需返回一个 PHP shell脚本,我就使用 passthru&#40;&#41;。通常,我在不同的场合中使用不同的函数,并且有时它们是可以互换的。 这完全取决于我的心情和要实现的目的

    WinCE脚本解析程序(写写文本就能做很多意想不到的事情)

    作了一些特殊处理以同时支持WinCE5和WinCE6,主要实现shell中的功能,提供的各种操作涉及到文件系统、窗口管理、进程管理和流程控制几个方面,通过解析配置文件内容来执行相应的操作,属于一种脚本解析程序。...

    1345个易语言模块

    取网卡参数.ec 取网络文件尺寸.ec 取网页元素.ec 取 腾讯TT浏览器的地址栏文本模块.ec 取节气模块.ec 取试用数据.ec 取非系统进程全路径文件名.ec 变身_超级编辑 框.ec 变速模块(1.0).EC 古木_选择文件夹.ec 古木...

    Shell编程中的特殊变量之进程状态变量介绍

    4、$_在此之前执行的命令或脚本的最后一个参数 代码如下: cat&gt; test$.sh echo’$$=’$$ echo’$!=’$! echo’$?=’$? echo’$@=’$@ echo’$_=’$_ #输出如下 sh test\$.sh 1 2 3 $$=2556 $!= $?=0 $@=1 2 3 $*和$...

    IPv6Regex:PowerShell脚本将IPv6地址与测试IPv6正则表达式和.Net TryParse方法进行匹配

    每个脚本块都将测试IPv6地址作为参数,并针对特定的正则表达式或IpAddress.TryParse()方法测试该地址。 如果测试认为该地址有效,则脚本块返回true,否则返回false。 脚本的下一个(最大)部分定

    易语言 茶凉专用模块

    子程序 到短路径, 文本型, 公开, 取指定路径的短路径名(返回收缩后的路径,无效返回空文本)如: c:\program files\ 收缩后为:C:\PROGRA~1\ .参数 文件名, 文本型, , 原路径 .子程序 到任意进制, 文本型, 公开, 可以将...

    iuvolt:破坏Intel CPU的脚本

    该脚本获取电压偏移(参数或来自配置)并将其转换为正确的HEX值,然后使用msr-tools软件包中的wrmsr命令将其写入负责欠压的寄存器中。 此机制是从Windows程序ThrottleStop反向工程而成的,它写入msr 0x150寄存器。 ...

    jsimpleshell:在Java中将强大的shell设置为cli的框架

    取决于参数类型的自动补全(默认情况下,命令和文件路径可用) 所有消息都可以解决(对l18n有用) 录制宏 运行时用户输入验证(可以使用自己的机制或JSR303-Validation) 有关将来可能的更改,请参见 这个怎么...

    Linux-Auto-Customizer:用于自定义Ubuntu-Linux环境并自动安装与编程相关的软件的脚本

    install.sh脚本可以将某些自定义功能(取决于所接收的参数)应用于当前用户控制台和Ubuntu-Linux环境,例如本地函数,文件模板和全局变量。 同样,也可以安装第三方软件,包括其依赖项。 该uninstall.sh可用于卸载...

    slurpshot:屏幕截图脚本,与bemenu一起摇摆

    您可以在脚本中编辑bemenu参数,以使设计套件成为您的设置(请参阅man bemenu)。 当前,菜单显示每个要选择的容器的坐标和过程名称,虽然它不是很漂亮,但是必须标识正确的容器。 如果有人对此有更好的解决方案,...

    nodesExctractor:节点提取器-这是一个bash脚本,专门使用vim为termux编写。 其目的是促进并加快程序Stick Nodes模型的安装

    (取决于运行脚本时指定的键),因此,此脚本可用于两个文件夹:“ sdcard / Downloads”和“ sdcard / Stick Nodes”。 sdcard /下载/节点: /结果 如果使用-cnd -mnd -d,则结果将在此目录中。 ls.txt 这是一...

    eosio-helpers:一些简单的脚本可帮助eos.io开发

    在手动创建新合同或使用eoscpp -n name创建开发合同之后,需要对开发环境进行配置,以便您可以专注于合同的代码,而不是杂乱的命令行工具,参数,键和其他详细信息。 以下脚本旨在帮助简化设置

    CETool(最新2013.8)

    作了一些特殊处理以同时支持WinCE5和WinCE6,主要实现shell中的功能,提供的各种操作涉及到文件系统、窗口管理、进程管理和流程控制几个方面,通过解析配置文件内容来执行相应的操作,属于一种脚本解析程序。...

    宋劲彬的嵌入式C语言一站式编程

    6. Shell脚本的调试方法 32. 正则表达式 1. 引言 2. 基本语法 3. sed 4. awk 5. 练习:在C语言中使用正则表达式 33. 信号 1. 信号的基本概念 2. 产生信号 2.1. 通过终端按键产生信号 2.2. 调用系统函数向进程发信号 ...

    chokidar-cli:快速的跨平台cli实用程序,可监视文件系统的更改

    Chokidar CLI 快速的跨平台... 虽然原则上chokidar-cli支持单引号和双引号,但实际的命令行参数解析取决于所使用的操作系统和shell;因此,实际的命令行参数解析取决于所使用的操作系统和shell。 为了实现跨平台兼容

    simple-movie-api:简单电影Api

    Node.js招聘任务这是一个简单的电影API。 api文件夹中有OpenApi规范(如json和yaml ),也可在上。运行应用很少需要环境变量才能正常运行该应用程序。...它使用一个简短的shell脚本,该脚本调用docker-compose D

Global site tag (gtag.js) - Google Analytics