Shell脚本命令行参数说明

参数名称参数含义

$$表示Shell本身的PID(ProcessID)

$!表示Shell最后运行的后台Process的PID

$?表示最后运行的命令的结束代码(返回值)

$-表示使用Set命令设定的Flag一览

$*表示所有参数列表。如"$用「」括起来的情况、以*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。

$@表示所有参数列表。如"$用「」括起来的情况、以@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

$#表示添加到Shell的参数个数

$0表示Shell本身的文件名

$1~$n表示添加到Shell的各参数值。$n是第n个参数

数组实例实现批量git push功能#!/usr/bin/env bash

proList=("scripts" "cases" "dockerfiles" "benchmark" "testng")

#打印数组长度

echo ${#proList[@]}

BASE_DIR=/home/win/codes

#for 循环遍历

cd $BASE_DIR

for var in ${proList[@]};

do

mkdir -p $BASE_DIR/$var

cd  $BASE_DIR/$var && git init

git remote add origin XXXXXX/gitrepo/$var.git

git remote -v

git pull origin master

git push --set-upstream origin master

done

Shell常用语法

变量

(1)变量与变量内容以一个等号『=』来连结

(2)等号两边不能直接接空格符

(3)变量名称只能是英文字母与数字,但是开头字符不能是数字

(4)变量内容若有空格符可使用双引号『"』或单引号『'』将变量内容结合起来

(5)可用跳脱字符『 \ 』将特殊符号(如 [Enter], $, \, 空格符, '等)变成一般字符

(6)按照惯例,有两种类型的Shell变量:

a.环境变量:环境变量可以从父进程传给子进程,因此Shell进程的环境变量可以从当前Shell进程传给fork出来的子进程。用printenv命令可显示当前Shell进程的环境变量。

b.本地变量:只存在于当前Shell进程,用set命令可以显示当前Shell进程中定义的所有变量(包括本地变量和环境变量)和函数

(7)用export命令可以把本地变量导出为环境变量

(8)用unset命令可以删除已定义的环境变量或本地变量: unset VARNAME

范例一:找出 /etc/ 底下以 cron 为开头的档名ll -d /etc/cron*    <==加上 -d 是为了仅显示目录而已

范例二:找出 /etc/ 底下文件名『刚好是五个字母』的文件名ll -d /etc/?????    <==由于 ? 一定有一个,所以五个 ? 就对

范例三:找出 /etc/ 底下文件名含有数字的文件名ll -d /etc/*[0-9]*  <==记得中括号左右两边均需 *

范例四:找出 /etc/ 底下,档名开头非为小写字母的文件名:ll -d /etc/[^a-z]*  <==注意中括号左边没有 *

命令代换:``或 $()

DATE=`date`    echo $DATE   命令代换也可以用$()表示:DATE=$(date)

算术代换:$(())

$(())中只能用+-*/和()等运算符,且只能做整数运算   : VAR=45    echo $(($VAR+3))

字符串长度:${#string}

stringZ=abcABC123ABCabc     echo ${#stringZ} # 15

文件路径操作

假设我们定义了一个变量为:

file=/dir1/dir2/dir3/my.file.txt

我们可以用 ${ } 分别替换获得不同的值:

${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt

${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt

${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file

${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

${file:0:5}:提取最左边的 5 个字节:/dir1

${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2

我们也可以对变量值里的字符串作替换:

${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt

${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt

利用 ${ } 还可针对不同的变量状态赋值(没设定、空值、非空值):

${file-my.file.txt} :假如 $file 没有设定,则使用 my.file.txt 作传回值。(空值及非空值时不作处理)

${file:-my.file.txt} :假如 $file 没有设定或为空值,则使用 my.file.txt 作传回值。 (非空值时不作处理)

${file+my.file.txt} :假如 $file 设为空值或非空值,均使用 my.file.txt 作传回值。(没设定时不作处理)

${file:+my.file.txt} :若 $file 为非空值,则使用 my.file.txt 作传回值。 (没设定及空值时不作处理)

${file=my.file.txt} :若 $file 没设定,则使用 my.file.txt 作传回值,同时将 $file 赋值为my.file.txt 。 (空值及非空值时不作处理)

${file:=my.file.txt} :若 $file 没设定或为空值,则使用 my.file.txt 作传回值,同时将 $file赋值为 my.file.txt 。 (非空值时不作处理)

${file?my.file.txt} :若 $file 没设定,则将 my.file.txt 输出至 STDERR。 (空值及非空值时不作处理)

${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。 (非空值时不作处理)

条件判断

[ -d DIR ]              如果DIR存在并且是一个目录则为真

[ -f  FILE ]             如果FILE存在且是一个普通文件则为真

[ -z STRING ]           如果STRING的长度为零则为真

[ -n STRING ]           如果STRING的长度非零则为真

[ STRING1 = STRING2 ]   如果两个字符串相同则为真

[ STRING1 != STRING2 ]  如果字符串不相同则为真

[ ARG1 OP ARG2 ]        ARG1和ARG2应该是整数或者取值为整数的变量,OP是-eq(等于)-ne(不等于)-lt(小于)-le(小于等于)-gt(大于)-ge(大于等于)之中的一个

带与、或、非的测试命令

[ ! EXPR ] EXPR可以是上表中的任意一种测试条件,!表示逻辑反

[ EXPR1 -a EXPR2 ]  EXPR1和EXPR2可以是上面任意一种测试条件,-a表示逻辑与

[ EXPR1 -o EXPR2 ]  EXPR1和EXPR2可以是上面任意一种测试条件,-o表示逻辑或

备注

windows下编写的shell脚本可能无法运行,通过如下方式将脚本变成unix下编码文件:方式1:set ff=unix     进行unix格式的转换;

方式2: dos2unix   XX.sh

linux push path,Linux系统shell使用几点摘录(二)相关推荐

  1. linux unset path,linux查看和修改PATH环境变量的方法

    查看PATH:echo $PATH 使用env命令显示所有的环境变量: $ env 使用set命令显示所有本地定义的Shell变量: $ set 使用unset命令来清除环境变量 set可以设置某个环 ...

  2. Linux中$PATH详解

    在linux中PATH是系统的环境变量,我的系统echo $PATH之后显示如下内容: /home/ceprei/.local/bin:/usr/local/sbin:/usr/local/bin:/ ...

  3. linux系统默认的环境变量path,Linux编程 12 (默认shell环境变量, PATH变量重要讲解)...

    一 .概述 默认情况下, bash shell会用一些特定的环境变量来定义系统的环境.这些默认环境变量可以理解是上篇所讲的系统全局环境变量. 1.1 bash  shell支持的Bourne变量 Bo ...

  4. 举例讲解Linux系统下Python调用系统Shell的方法

    http://www.jb51.net/article/74508.htm 有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何 ...

  5. Linux系统shell脚本、python脚本编写

    GPU排队脚本 python脚本 GPU排队脚本 ---- GPU一旦空闲触发脚本执行程序 参考: GPU排队脚本(python脚本) cmd = 'bash run.sh' 该句设置要执行的pyth ...

  6. linux 系统 Shell语言 基础

    linux 系统 Shell语言 基础 第一章 Shell 编程 1 . 概述 ​ Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Sh ...

  7. Linux系统 Shell脚本语言

    Shell脚本编程 Shell 是系统的用户界面,提供用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行,实际上 Shell 是一个命令解释器,解释由用户输入的命令,并且把它们 ...

  8. Linux系统shell脚本之打印系统的IP信息

    Linux系统shell脚本基础之打印系统的IP信息 一.脚本要求 二.脚本内容 三.执行脚本 一.脚本要求 1.显示服务器的运行状态,并输出提示 2.输出电脑的IP地址等信息 3.将执行输出的信息记 ...

  9. C++笔记之linux下非阻塞多线程运行多个系统shell命令(popen方法)

    参考博文:C++ linux 睡眠函数sleep和std::this_thread::sleep_for 参考博文:C++笔记之linux下运行系统shell命令(popen方法)函数封装 参考博文: ...

最新文章

  1. 云端卫士架构师讲DDoS攻击的智能防御之道
  2. 递归查询树状结构某个确定的节点
  3. python代码规范链接
  4. NSIS中判断.net framework 是否安装
  5. 【Java5】String类,StringBuilder类,ArrayList类,Object类(toString,equals,hashCode)
  6. SAP UI5 get route - local version VS central version
  7. ObjectiveC 深浅拷贝学习
  8. AndroidStudio安卓原生开发_启动系统的activity_短信发送activity_摄像头activity_电话拨打activity---Android原生开发工作笔记94
  9. win10磁盘管理界面各系统分区介绍
  10. Confluence 6 安全相关问题提交链接
  11. 【工具】pt-online-schema-change
  12. CVE-2015-1427(Groovy 沙盒绕过 代码执行漏洞)
  13. 每日10行代码82:网上购物活动满减凑单计算器
  14. Mybatis注解开发笔记
  15. 2021.07.22禾赛提前批一面面经
  16. uniapp文档常用整理
  17. java中输出一天每半个小时的时间段
  18. 终极单词index 排序 K-L
  19. 黑盒测试的原理及内容
  20. php中的isset函数

热门文章

  1. android display list,从android.view.GLES20DisplayList释放位图
  2. 这是给程序员专用的书吗?
  3. 服务发布或重启,发生抖动怎么办?
  4. 除了 k8s,留给 k 和 s 中间的数字不多了!
  5. 皮一皮:这是结婚还是华山论剑...
  6. 为什么 StackOverflow 上的代码片段会摧毁你的项目?
  7. 读取Excel还用POI?试试这款开源工具
  8. sqlserver sql行专列_sqlserver----记录转载(行转列)、列转行、pivot、unpivot
  9. 如何监控impala的数据_CDH秘籍(两):cloudera Manager存储监控数据
  10. android ui自动化测试工具,介绍Robotium+Orange实现androidUI自动化测试