-
2019-04-12 11:52:24更多相关内容
-
apk自动打包编译Shell脚本
2019-04-20 11:29:53安卓apk在CentOS上自动化编译打包发布脚本, 支持阿里ECS和RDS, 详细使用请查看博客 -
树莓派linux内核交叉编译shell脚本.zip
2019-08-22 20:29:24树莓派内核交叉编译脚本,ubuntu上运行,scp传到树莓派,运行pifuzhi.sh覆盖原来文件,树莓派B ver2测试通过,但免密码scp没有解决好,另外内核3.6版本没有dtb而是dts文件。 -
shell编译脚本常见写法
2021-07-28 17:35:58Shell脚本常用命令## 标题 本文主要记录自己在开发过程中遇到的shell脚本的高频使用命令 1、目录获取 #获取当前脚本的相对路径 SRC_DIR=$(dirname "${BASH_SOURCE[0]}") #转化为绝对路径 SRC_DIR=$(realpath "$SRC_...本文主要总结自己在开发过程中遇到的编译使用的shell脚本的高频使用方法。
一般一个编译脚本都有如下几个过程。
1)获取当前脚本目录,后续脚本都基于当前目录来处理,便于移植,使用者将整个目录拷贝后就可以在任意位置使用。
2)加载一些公共脚本,进行初始化或者公共函数定义。一个大工程中,编译过程通常需要多个脚本完成,提取相同函数放入一个公共脚本,以减少代码冗余。
3)脚本入参获取。通常执行脚本可以带一些选项,常见的比如编译脚本的一些编译控制选项。
4)针对不同情况做分支处理,常用的就是 if 的条件判断语句。
5)一些可复用的函数下面分别对上述过程实现方法做详细介绍:
1、目录获取#方式一 SRC_DIR=${realpath "${dirname "${BASH_SOURCE[0]}"}"} #方式二 DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" && pwd);
- BASH_SOURCE[0]表示当前脚本名带相对路径,与BASH_SOURCE效果相同。
${BASH_SOURCE[0]}是${cmd}的形式,表示将cmd命令执行后的结果,与dirname组成一个新命令并执行。dirname是获取当前文件所在的文件夹路径(dirname命令去除文件名中的非目录部分),所以$(dirname “${BASH_SOURCE[0]}”)表示当前脚本所在的文件夹路径。
realpath就可以将当前路径转化为绝对路径。 - 方式二中 && 只有当左边执行成功才执行右边,所有先cd到当前目录,然后pwd显示当前绝对路径
2、在shell脚本中执行其他脚本
#方式一 source $SCRIPT_PATH/android-build-common.sh . $SCRIPT_PATH/android-build-common.sh #方式二 bash $SCRIPT_PATH/android-build-common.sh sh $SCRIPT_PATH/android-build-common.sh ./$SCRIPT_PATH/android-build-common.sh
- source+filename
表示在本shell进程中执行该脚本,相当于直接把新脚本的代码拷贝到原脚本处并执行,该filename文件可以无“执行权限”。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。“.”方式与source 相同。 - bash/sh filename
重新建立一个子shell进程并执行脚本,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。该filename文件可以无“执行权限”。“./filename”与bash/sh 相同。
注意如果filename不是以 #!/bin/bash 开头,那么也不会在子进程中执行。
3、脚本(函数)入参获取
#!/bin/bash #举例 while [[ $# > 0 ]] do key="$1" case $key in --freerdp-src) SRC_DIR="$2" shift ;; --jpeg) WITH_JPEG=1 shift ;; --openh264) WITH_OPENH264=1 shift ;; *) REMAINING="$REMAINING $key" shift ;; esac done
- $+特殊字符 用法
变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" “)包含时,都以”$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数。但是当它们被双引号(" “)包含时,”$*" 会将所有的参数作为一个整体,以"$1 $2 … n " 的 形 式 输 出 所 有 参 数 ; " n"的形式输出所有参数;" n"的形式输出所有参数;"@" 会将各个参数分开,以"$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数。
- shift 用法
位置参数可以用shift命令左移,shift 命令每执行一次,变量的个数($#)减一,而变量值提前一位 - case 用法
注意 “–freerdp-src” 是作为一个整体
*) 表示未匹配到上述情况时则执行该语句,类似C语言switch-case里的default
;; 双分号相当于C语言里的break
4、if 条件语句
if [ -z $BUILD_ARCH ]; then BUILD_ARCH="armeabi-v7a x86 x86_64 arm64-v8a" fi
if 括号中的各种条件语句含义 可参考此文档
5、常用函数–执行命令
将执行的重要shell命令采用函数形式,打印出命令语句及返回错误结果,便于调试与定位。function common_run { echo "[RUN] $@" "$@" RES=$? if [[ $RES -ne 0 ]]; then echo "[ERROR] $@ retured $RES" exit 1 fi }
举例
common_run cd $BASE common_run export CMAKE_PROGRAM=/usr/bin/cmake common_run cmake --build . --target install
- BASH_SOURCE[0]表示当前脚本名带相对路径,与BASH_SOURCE效果相同。
-
linux下编译shell脚本时报错:没有那个文件或者目录
2021-12-15 11:07:51在网上找到答案 找到原因了,是因为linxu的换行和wondows下的换行不一样,wondows下是/r/n,多出来了个/r 只需要加sed -i 's/\r//' backup_file.sh && bash backup_file.sh即可在网上找到答案
找到原因了,是因为linxu的换行和wondows下的换行不一样,wondows下是/r/n,多出来了个/r
只需要加
sed -i 's/\r//' backup_file.sh && bash backup_file.sh
即可
-
mysql5.7.20一键编译安装shell脚本
2021-10-31 16:07:27mysql版本5.7.20 -
Ffmpeg源代码及自动编译shell脚本(别人的,我再备份下)
2014-12-02 16:12:46Ffmpeg源代码及自动编译shell脚本(别人的,我再备份下) -
Shell脚本连接oracle数据库的实现代码
2021-01-09 02:47:01最近研究了一下怎样使用shell 脚本连接数据库,然后执行查询语句。这样对于需要定时执行的脚本,我们可以建个 crontab 去定时执行。 先介绍一下客户端的安装: linux 环境需要用 sqlplus 客户端去连接oracle 数据库... -
shell脚本编译基础
2022-07-01 17:20:18从0开始学习shell脚本的编译 内容分为三个章节: 1、shell脚本编写规则 2、shell脚本常用方法 3、shell脚本的基础语法 -
shell脚本编译Oracle存储过程
2015-07-02 11:35:32linux系统中使用shell脚本对oracle存储过程进行编译 -
sh2exe:将Shell脚本和busybox打包到单个exe文件中-开源
2021-04-26 09:53:22这个小程序将Shell脚本和Busybox打包到单个EXE中,因此该脚本可以在任何Windows计算机上运行。 可以在脚本中包含其他文件,因此例如可以用于部署文件。 这是初始版本,可能有很多错误。 它支持Busybox-Win32和Cygwin... -
编译FFmpeg的shell脚本文件
2017-08-16 17:50:50执行脚本,自动下载并编译为so库,支持编译为armv7-a、arm64-v8a、mips、x86、x86_64架构的so库 -
如何在Linux下编写一个简单的Shell脚本
2021-05-09 01:47:25我们就可以在终端中用vi/vim编辑器编写一个shell的脚本程序了Shell既为一种命令解释解释工具,又是一种脚本编程语言,用各种shell下的命令和一些特定的语法结构就可以组成一个Shell脚本程序,shell脚本程序是一个纯...在了解了Linux终端和其搭配的基本Shell(默认为bash)的基础下,我们就可以在终端中用vi/vim编辑器编写一个shell的脚本程序了
Shell既为一种命令解释解释工具,又是一种脚本编程语言,用各种shell下的命令和一些特定的语法结构就可以组成一个Shell脚本程序,shell脚本程序是一个纯文本文件,但在执行之前不需要任何操作。我们可以通过写一些脚本来让我们更方便的对文件进行操作,以及做一些shell的测试。
#学习本篇知识需了解简单的vi,chmod,以及vi编辑器的使用
1:打开终端,进入保存程序的目录,命令行输入 vi test.sh(Shell脚本程序的后缀为.sh)
2:在Shell编程中,#后的字符可以作为注释,所以必要的我们需要在程序中写上一些注释,这确实可以让你的程序上升一个档次,还须注意的是需要在程序第一行申明#!/bin/bash(csh,zsh..), 使用#!用来表明我们的程序是用bash(这里用的)来执行
3:这里编写了一个简易的脚本程序如下:
程序部分
4:编写后可直接运行,./表示当前目录,输入./test.sh执行,会发现没有权限(permission denied),然后我们给自己授个权,就可以运行了,但是因为此脚本为一个纯文本文件,在执行之前相对于其他程序的执行少了编译这一步,所以会显得有一点迟钝。
一个个小的Shell脚本就成功了。
如果想进一步加强脚本的内容,大家可以多多了解Shell下的一些命令,以及Shell语言的一些语法风格,上述的程序中只用到了一些简单的命令。
-
一种限制shell脚本并行执行的方法
2018-07-24 21:28:21本发明公开了一种限制shell 脚本并行执行 的方法,应用于linux 和unix 平台,包括:当有 shell 脚本需要执行时,脚本模块处理器向管道 写入请求;令牌模块处理器在管道另一端顺序读 取所述请求,当有令牌空闲时,将... -
使用shc工具加密shell脚本详解
2021-01-20 16:09:18Shc可以用来对shell脚本进行加密,可以将shell脚本转换为一个可执行的二进制文件。经过shc对shell脚本进行加密后,会同时生成两种个新的文件,一个是加密后的可执行的二进制文件(文件名以.x结束),另一个是C语言的... -
shell脚本 自己编写 ubuntu下测试运行成功
2020-09-25 11:12:48(1)判断/home下是否存在一个的目录文件;如果不存在则转(2)继续往下执行;如果存在则判断该目录下是否存在一个.c文件,如果不存在则转...(5)在shell脚本中写好编译命令 (6)在shell脚本中运行程序,输出相应内容 -
自动化编译shell脚本_jenkins
2017-05-26 16:33:31自动化编译shell脚本: export LC_CTYPE="zh_CN.UTF-8" #输入参数——发布版本号设定 relversion=x.y.z #输入参数——代码库的测试基线路径设定 buildbaselinepath=svn://xxxxxxxxxxxxxxxxxxxx #输入参数——发布的... -
swift-iOS自动编译打包shell脚本
2019-08-15 04:12:19iOS 自动编译打包shell脚本 -
jdk下载全自动化shell脚本
2018-04-10 11:42:41一次编译,到处使用,shell实现全自动化下载jdk.不足之处大家可以提出来。谢谢 -
Shell脚本一键部署——源码编译安装LAMP架构!-附件资源
2021-03-05 15:18:11Shell脚本一键部署——源码编译安装LAMP架构!-附件资源 -
shell脚本apache自动化安装
2020-12-13 23:17:44shell脚本 复制粘贴执行即可自动化安装apache 软件包介绍:apr :Apache可移植运行库,给apache模块中添加组件和开发工具 cyrus-sasl: 协议认证模块,认证apache可调用的协议 expat-devel:编译扩展环境,在编译... -
Linux Shell脚本编程初体验
2021-01-11 05:11:00通常,当人们提到“shell脚本语言”时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言。脚本语言是与计算机交流的另外一种途径。使用图形化窗口界面(不管是windows还是linux都无所谓)用户... -
基于shell的自动化编译脚本 一>
2022-04-26 14:15:531、基于shell的一键式编译脚本 <一>多参数传入编译脚本; <<COMMENT 如果要写一个编译脚本有很多选项采用如下方式: shift 将传入的参数前移; 假如脚本名字是start_compile.sh ; 运行命令行: sh start... -
Shell中实现“多线程”执行脚本文件完美解决方案
2020-09-15 18:18:31主要介绍了Shell中实现“多线程”执行脚本文件完美解决方案,本文是针对一次调用执行多个脚本文件并分批执行的一个解决方法的测试和总结,需要的朋友可以参考下 -
iOS通过shell脚本批量修改属性
2021-01-20 09:50:25背景 公司需要做一系列的壳版本,壳版本如果内容雷同提交到App ...下面是执行脚本替换了属性的结果图,脚本把所有需要替换的属性添加了abc后缀,当然依然是可以正常编译运行的 源码:https://gitee.com/dhar/YTTInje -
shell编译命令全在这里了
2020-09-28 09:31:30shell编译命令全在这里了 目录切换 cd: change directory :注意cd后面必须有空格 cd … 后退一步 cd /root 进入根目录下的root文件夹中 cd root 进入根目录下的子目录 cd / 进入根目录 cd ~ 进入/root目录 显示子... -
Shell脚本编程---基本脚本编译(一)
2019-01-03 21:21:51一、多条shell命令的使用 [root@ceph01 ~]# date ; who Thu Jan 3 08:51:38 ... 其实这就是一个简单的脚本,date先执行输出然后执行who输出。在shell命令行可以连续执行多条命令,命令行的最大字符数不得超... -
bash2cpp:将bash脚本转换为C ++代码。 对于简单的shell脚本很有用,这些脚本可以转换为C ++以提高速度
2021-03-14 11:48:13通过使用本机二进制文件而不是Shell脚本,可以缩短执行时间。 防止混淆代码,以防止修改。 bash2cpp并不是一个完整的翻译器,但是对于简单的脚本却表现出色。 要求 sudo apt-get install -y build-essential sudo... -
实验十三-shell脚本练习
2019-12-21 16:31:59实验十三-shell脚本练习实验十三-shell脚本练习 -
sublime配置shell脚本解释器
2018-07-13 14:33:05新建编译文件shell.sublime-build, 编译系统选择自动即可 { "cmd": ["bash", "$file"], "selector": "source.shell"...