shell脚本

shell

ぃ、小莉子 提交于 2019-12-03 14:59:39
三、函数的参数传递 1、使用变量的方式传递固定值 [root@manager-61~/cxp]# cat function.lx02.sh #!/usr/bin/bash fun_1(){ echo "$num" } num=10 fun_1 [root@manager-61~/cxp]# sh function.lx02.sh 10 2、使用变量的方式传递可变的值 [root@manager-61~/cxp]# cat function.lx03.sh #!/usr/bin/bash fun_1(){ echo "$num" } num=$1 #执行脚本时将脚本的位置变量的第一个参数传给num fun_1 [root@manager-61~/cxp]# sh function.lx03.sh 6 6 [root@manager-61~/cxp]# sh function.lx03.sh hello hello 3、函数传参示例,传递多个位置参数 `方式一` [root@manager-61~/cxp]# cat function.lx04.sh #!/usr/bin/bash fun_1(){ echo "$1" } fun_1 $1 fun_1 $2 fun_1 $3 [root@manager-61~/cxp]# sh function.lx04.sh 11 22 33 11

收集整理的对#!bin/sh的认识

♀尐吖头ヾ 提交于 2019-12-03 14:14:28
第一次学shell编程,看的文章中说shell程序必须以"#!/bin/sh"开始,也就认为是这样了。 虽然知道在shell中以"#"开始的语句都是注释,但也从没认为"#!/bin/sh"也是注释,就像对C语言程序必须有main函数一样毫无怀疑。 但前些时候又听说"#!/bin/sh"也是注释,可有可无,当时觉得真是一个失败,连基本的语法都分不清。 前几天借了一本书,才真正认识了"#!/bin/sh"。 shell编程是以"#"为注释,但对"#!/bin/sh"却不是。 "#!/bin/sh"是对shell的声明,说明你所用的是那种类型的shell及其路径所在。 如果没有声明,则脚本将在默认的shell中执行,默认shell是由用户所在的系统定义为执行shell脚本的shell。 比如:如果脚本被编写为在Korn Linux中运行,而默认运行shell脚本的为C shell csh,则上述脚本在执行过程中很可能失败。 所以建议大家就把"#!/bin/sh"当成C 语言的main函数一样,写shell必须有,以使shell程序更严密。 来源: oschina 链接: https://my.oschina.net/u/781842/blog/119598

shell 脚本中的注释详解

好久不见. 提交于 2019-12-03 13:58:44
  上次写了shell脚本的注释,没想到那么多人的需要,也存在不少不足。这次做个补充吧。 单行注释:   单行注释就比较简单了,直接在行最前端加上符号 # 即可。具体用法如下所示: # this is comment test echo "this is comment test"   运行结果: ➜ comment git:(master) ✗ sh comment.sh this is comment test 多行注释:   多行注释有很多方法,这里就列举几个常用的 1 eof截止符   eof截止符不但可以用作后续输入命令,还可以用作注释,常用用法:开始注释部分:输入::<<eof 结束部分:eof   具体示例如下所示: 1 # echo is test 2 echo "test" 3 echo "test" 4 echo "test" 5 echo "test" 6 echo "test" 7 :<<eof 8 echo "comment" 9 echo "comment" 10 echo "comment" 11 echo "comment" 12 echo "comment" 13 echo "comment" 14 eof   运行结果: ➜ comment git:(master) ✗ bash comment.sh test test test test

shell 版本号比较_用shell如何比较软件版本号的大小

雨燕双飞 提交于 2019-12-03 13:36:40
比如你想写个脚本来比较两个版本号 (如"1.2.30" 和"1.3.0")来辨认哪个版本是最新的,有可以比较两个版本号字符串的shell脚本吗? 当你写了一个shell脚本,想使用脚本来比较两个版本号,然后能区分哪个版本号更高哪个版本号更低。比如,你安装某个软件的时候,要求是版本号要大于1.3.0,想验证最低配置要求.又或者你想在shell脚本中写版本号判断(比如版本号如果介入1.0.0 ≤ 版本 ≤ 2.3.1). 如果你想通过shell来比较两个版本号字符串的话最简单的就是使用 sort 命令。加上参数"-V"后 sort命令就可以把文本中的版本号给排序出来(默认是递增的排序),然后你想倒叙排序的话那就使用参数"-rV"即可 . 下面我们就来看下在shell中怎么使用 sort命令来比较版本号吧 对于要比较版本号字符串的话,下面的这些使用了 sort命令的自定义 函数可能会派上用场. function version_gt() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"; } function version_le() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" == "$1"; } function version

Shell脚本编程

和自甴很熟 提交于 2019-12-03 13:30:06
shell脚本编程 编程语言的分类:根据运行方式 编译运行:源代码 --> 编译器 (编译)--> 程序文件; 解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行; shell脚本格式: 脚本文件的第一行,顶格:给出shebang(解释器路径),用于指明解释执行当前脚本的解释器程序文件 常见的解释器: #!/bin/bash #!/usr/bin/python #!/usr/bin/perl 文本编程器:nano 行编辑器:sed 全屏幕编程器:nano, vi, vim 运行脚本: 赋予执行权限,并直接运行此程序文件; chmod +x /PATH/TO/SCRIPT_FILE /PATH/TO/SCRIPT_FILE 直接运行解释器,将脚本以命令行参数传递给解释器程序; bash /PATH/TO/SCRIPT_FILE 练习: (1) 显示/etc目录下所有以大写p或小写p开头的文件或目录本身 (2) 显示/var目录下的所有文件或目录本身,并将显示结果中的小写字母转换为大写后显示 (3) 创建临时文件/tmp/ycgod.xxxx #!/bin/bash ls -d /rtc/[pP]* ls -d /var/* | 'a-z' 'A-Z' mktemp /tmp/ycgod.XXXX 脚本的状态返回值: 默认是脚本中执行的最后一条件命令的状态返回值

shell 脚本学习(一)

痞子三分冷 提交于 2019-12-03 12:20:00
一.vi编辑器的常用指令   1.命令行模式     x   #删除一个字符     dd  #删除一整行   2.插入模式     i   #在光标前插入内容     o   #在当前行之下新开一行   3.底行模式     x 或者 wq #保存退出     q!    #退出不保存     set nu  #显示行数     /     #搜索内容 二.常见得shell的解释器   # !/bin/bash   # !/bin/ksh   # !/bin/bsh   # !/bin/sh   注意:shell一定得有解释器吗? 不一定! 三 shell 脚本的文件权限与脚本执行   文件权限:- rw- r-- r--   目录权限:d rw- r-- r--   分三列:每三个为一列,分别是所有者(owner),所属组(group),其他(others)   rwx r:4 w:2 x:1   7 5 5   添加执行权限 chmod +x shell.sh   执行方法     方法1:./shell.sh 这个需要文件有执行权限     方法2 sh shell.sh 这个不需要文件有执行权限,只需要有可读权限即可     方法3 source shell.sh 不常用 四.shell变量以及常用的符号   常见变量    不同于其它语言需要先声明变量  

Shell bash和sh区别

…衆ロ難τιáo~ 提交于 2019-12-03 11:36:57
Shell 中文意思贝壳,寓意类似内核的壳。Shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 Shell 脚本(shell script)是一种为 shell 编写的脚本程序。常说的shell通常都是指 shell 脚本,但shell和shell script是两个不同的概念。通常说“shell编程”都是指 shell 脚本编程,不是指开发 shell 自身。 sh(Bourne Shell)是一个早期的重要shell,1978年由史蒂夫·伯恩编写,并同Version 7 Unix一起发布。 bash(Bourne-Again Shell)是一个为GNU计划编写的Unix shell。1987年由布莱恩·福克斯创造。主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接。 dash (Debian Almquist shell)一种 Unix shell。它比 Bash 小,只需要较少的磁盘空间,但是它的对话性功能也较少。它由 NetBSD版本的Almquist shell (ash)发展而来

shell 函数

和自甴很熟 提交于 2019-12-03 11:34:39
1.如何定义函数和调用函数 fun01 () { echo "Hello World"; } fun01 2.如何给函数传递一个参数 fun01 () { echo "Hello $1"; } fun01 SHell #执行时跟上一个固定的参数 fun01 $1 #执行时跟上一个不固定的参数 (脚本的位置参数,需要执行脚本时传递) 3.函数接收N多个参数传递 fun01 () { echo "Hello $*"; } fun01 liunx shell Python Test 4.函数传参 第一种方式 fun01 () { echo "Hello $1" } #脚本的位置参数 fun01 $1 需求1,写一个脚本,该脚本可以实现计算器的功能,可以进行 +- * / 四种计算。 例如: sh cal.sh 30 + 40 | sh cal.sh 30 - 40 | sh cal.sh 30 * 40 | sh cal.sh 30 / 40 [root@manager functions]# cat fun02.sh fun () { case $2 in +) echo $1 + $3 = $[ $1 + $3 ] ;; -) echo $1 - $3 = $[ $1 - $3 ] ;; x) echo $1 x $3 = $[ $1 * $3 ] ;; /) echo $1 /

doris: shell invoke .sql script for doris and passing values for parameters in sql script.

拥有回忆 提交于 2019-12-03 11:24:49
1. background in most cases, we want to execute sql script in doris routinely. using azkaban, to load data,etc.And we want to pass parameters to the sql script file. we can easily handle such situation in hive. 1.1 hive usage: using -hiveconf: or -hivevar: shell file: we want to pass 2 parameters into hive sql script: p_partition_d & p_partition_to_delete : which pass two parameters into hive.sql file using -hivevar {variable_name}={variable_value} #!/bin/bash CURRENT_DIR=$(cd `dirname $0`; pwd) echo "CURRENT_DIR:"${CURRENT_DIR} APPLICATION_ROOT_DIR=$(cd ${CURRENT_DIR}/..;pwd) echo

IOS工程自动打包并发布脚本实现

女生的网名这么多〃 提交于 2019-12-03 11:13:22
作者:webfrogs 转载请注明出处。 前言 IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的。尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作。通过一番研究后,遂决定写一系列脚本,以代替人工完成打包和发布的过程。 目前脚本已经完成,基本可以满足我目前的需求。现将其开源,托管在github上,项目地址: 点击这里 思路 借助xcode所附带的“Command Line Tools”,可以通过命令行来完成IOS工程的编译和打包工作。脚本正是基于此完成的。 本套脚本分为三个部分:负责编译工程并打包的脚本ipa-build,负责生成itms-services协议文件的脚本ipa-publish,以及负责将ipa-publish脚本生成文件上传到服务器的脚本upload。 其中,由于我自己的情况是服务器端的同事给我了内部测试服务器的sftp的上传权限,所以这个upload脚本主要实现了使用sftp来上传的功能。具体可以实际情况来做修改。 关于itms-services协议的一些内容,可以参考我之前的文章: 《shell脚本实现ipa一键安装(itms-services协议)》 注意: 默认安装完的xcode并没有自带“Command Line Tools”,需要在xcode中选择后下载才能使用 实现 打开工程后