bash的工作特性之命令执行状态返回值和命令展开所涉及的内容及其示例演出

!脚本执行与调试

1、绝对路径执行,要求文件有执行权限

2、以sh命令执行,不要求文件有执行权限

3、.加空格或source命令执行,脚本将在当前shell中执行

4、检查脚本语法

bash -v test.sh

5、跟踪脚本执行

bash -x test.sh

!环境脚本执行规则

用户登录:/etc/profile、/.bash_profile、/.bash_login、~/.profile

用户注销:~/.bash_logout

执行新shell: /etc/bash.bashrc、~/.bashrc

执行script(使用#!/bin/bash):如指定BASH_ENV的值,则执行其指定的启动文件

执行script(使用#!/bin/sh):不调用任何环境脚本

!基本语法

1、脚本程序以#!/bin/bash 开始。以告之系统脚本以何种shell执行。

2、以#开头的行被视为注解,执行时自动忽略。

3、每行不得多于255个字节,可在行末加上反斜杠的方式拆分单行内容到多行中。

例如:

test1=abcdefg

hij

klmnopq

rstuvwxyz

4、多命令以分号分隔时,命令从左至右依次执行。

例如: whoami;w

5、多命令以&&分隔时,命令从左至右按前面命令执行成功后再执行下个命令的原则依次执行。

例如:make && make install

6、多命令以||分隔时,命令从左至右按前面命令执行失败后再执行下个命令的原则依次执行。

7、多个命令以分号分隔放置()中,则会启用子shell并执行。

例如:(mkdir testdir;cd testdir;touch testfile)

8、多个命令以分号分隔放置{}中,则会在当前shell中执行。需要注意的是命令和{}必须有空格间隔,并且最后一条命令也必须加分号。

例如:{ mkdir testdir;cd testdir;touch testfile; }

9、被反引号`括起来的命令或$(命令),shell将直接引用执行结果。

例如:

test=date

test=$(date)

10、可以将算术运算式以$[ 算术运算式 ]的形式进行求值。注意算术运算式和[]必须有空格分隔,此方法只支持整型运算。

例如:test=$[ 32 * 17 ]

11、使用$((运算式))的形式也可以进行算术运算求值,并且可以进行布尔运算。

例如:test=$(( 32 * 17 ))

12、使用let 运算式也能进行算术运算,算术式各元素间不得有空格,否则应将算术式用引号括起来。

例如:let ++test

13、任何命令执行后均会返回一个取值范围在0~255之间的整型返回码。主要值含义如下:

0:正常结束

1:通用执行错误

2:误用shell命令

126:命令不可执行

127:命令未找到

128:无效退出参数

130:被ctrl-c强行中止

255:退出状态码越界

shell script默认返回最后一条命令的返回码。可以使用exit退出script执行并返回指定的返回码。

例如:exit 15

通过$?这个系统变量可以获取上一条命令的返回码。

例如:

sync

echo $?

14、通过getopts命令获取命令行选项。

语法为:getopts 选项行 选项变量。

选项行由各选项的单一字符组成,如某选项字符需要参数,则在选项字符后加冒号。调用时此选项后无参数的话系统会提示错误,如不希望出现提示则应在选项行最前面加上冒号。系统会将参数存入OPTARG变量。

例如:

#!/bin/bash

while getopts :a:bc opt

do

case $opt in

a)

echo "选项a,后跟参数:$OPTARG";;

b)

echo "选项b";;

c)

echo "选项c";;

*)

;;

esac

done

15、利用mktemp建立临时文件

语法为:mktemp 选项 临时文件模板

如果建立成功返回0。

临时文件模板格式形式如:/tmp/test.XXXXXX或/usr/ttt/tttt.XXXXXX,文件名末6个字符必须为XXXXXX.生成成功后会由系统代替为随机6个字符。

选项-q 不产生错误信息。

选项-p 指定建立临时文件的父级目录,父级目录必须已存在。例如:mktemp -p /usr/tmp tf.XXXXXX

选项-t 按环境变量TMPDIR变量中指定的父级目录建立临时文件,如变量未定义,则父级目录为/tmp

选项-d 建立的是临时目录。

直接执行mktemp,会在/tmp目录下建立tmp.XXXXXX形式的临时文件,文件名末6个字符为随机字符。可使用下面方式获取生成的文件名。

tmpfile=$(mktemp)

bash命令的使用的更多相关文章

  1. Windows 10预览版14316开启Bash命令支持

    00x0 前言 4月7日凌晨,微软推送了最新的Windows 10一周年更新预览版14316,其中重要的是原生支持Linux Bash命令行支持. 00x1 问题 如何开启Linux Bash命令行? ...

  2. bash命令行返回值和展开

    bash命令行返回值和展开 标签(空格分隔): bash,命令,状态,展开 1.命令状态结果和执行结果 (1)命令执行的状态返回值,命令执行完成之后,其执行状态结果值保存于bash的特殊状态变量$?中 ...

  3. 转: windows 10使用原生linux bash命令行

    转: https://www.zybuluo.com/pandait/note/337430 windows 10使用原生linux bash命令行 linux bash windows-10 第一时 ...

  4. BASH 命令以及使用方法小结

    最近工作中需要写一个Linux脚本,用到了很多BASH命令,为了防止以后忘记,在这里把它们一一记下来.可能会比较乱,随便看看就好了.如果有说的不对的地方也欢迎大家指正. 1,export VAR=.. ...

  5. history介绍及bash命令快速调用

    在日常工作中,能够快速并准确的使用命令是必不可少的,下面为大家介绍一下其中的小技巧. 一.查找命令历史——history 使用history能够快速的找到之前输入过的命令. # history 大家可 ...

  6. Linux Bash命令关于程序调试详解

    转载:http://os.51cto.com/art/201006/207230.htm 参考:<Linux shell 脚本攻略>Page22-23 Linux bash程序在程序员的使 ...

  7. Python调用Linux bash命令

    import subprocess as sup  # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了 # 3.5版本之后官方推荐使用sup.run ...

  8. CentOS Bash 命令补全增强软件包 bash-completion

    引言 之前安装的 CentOS 7 是最小化安装,在使用 systemctl 命令进行服务的管理时,经常手动输入相关服务名.如果对一个服务名称不熟悉,这样可以迫使我们记住它,但如果对一个服务名已经很熟 ...

  9. Linux常用bash命令

    目录 bash命令 基础操作 export | whereis | which | clear 文件操作 ls | touch | cat | more | head | tail | mv | cp ...

  10. Linux之整理bash命令类型

    作业四:整理bash命令类型,验证寻找一个命令的优先级 类型 ==> alias ==> Compound Commands ==> function ==> build_in ...

随机推荐

  1. redis基本数据类型 set类型

    127.0.0.1:6379> SADD s1 a b c (integer) 3 127.0.0.1:6379> SMEMBERS s1 1) "b" 2) &quo ...

  2. Couchdb-权限绕过--命令执行--(CVE-2017-12635)&&(CVE-2017-12636)--H2database命令执行--(CVE-2022-23221)

    Couchdb-权限绕过--命令执行--(CVE-2017-12635)&&(CVE-2017-12636)--H2database命令执行--(CVE-2022-23221) 环境概 ...

  3. 《流畅的Python》 读书笔记 230926(第一章后半部分)

    1.2 如何使用特殊方法 特殊方法的存在是为了被 Python 解释器调用的,你自己并不需要调用它们 就是说通常你都应该用len(obj)而不是obj.__len()__,无论是系统预置的,还是你自己 ...

  4. Quantitative Relationship Induction

    数量关系是指事物之间的数值或数量之间的相互关系(+.-.*./). 数量关系描述各种量的变化和相互关系.数量关系可以包括数值的比较.增减.比例.百分比.平均值等方面. 在数学中,数量关系可以通过代数方 ...

  5. 深入理解 python 虚拟机:原来虚拟机是这么实现闭包的

    深入理解 python 虚拟机:原来虚拟机是这么实现闭包的 在本篇文章当中主要从虚拟机层面讨论函数闭包是如何实现的,当能够从设计者的层面去理解闭包就再也不用死记硬背一些闭包的概念了,因为如果你理解闭包 ...

  6. CF451B

    题目简化和分析: 这题就是判断将一段翻转后是否能变为升序的数组. 我的方法是保存原数组每一个数出现的位置(相同任意一个),让后另外用一个数组存储排好序后的原数组,逐一进行比较. 若同,则跳到下一个元素 ...

  7. 当个 PM 式程序员「GitHub 热点速览」

    本周 GitHub 热点依旧是 GPT 类项目,当中的佼佼者自然是本文收录的 gpt-pilot,一周获得了 7k+ star.此外,像是 LangChain.Autogen 之类的 LLM 工具链项 ...

  8. JS逆向实战25——某壳找房模拟登录+百度喵星人指纹加密破解.

    声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 目标 目标网站 aHR0c ...

  9. Python 潮流周刊#26:requests3 的现状

    你好,我是猫哥.这里每周分享优质的 Python.AI 及通用技术内容,大部分为英文.本周刊开源,欢迎投稿.另有电报频道作为副刊,补充发布更加丰富的资讯. 品牌赞助 本周刊由"Python猫 ...

  10. JS判断点是否在线段上

    本文利用向量的点积和叉积来判断点是否在线段上. 基础知识补充 从零开始的高中数学--向量.向量的点积.带你一次搞懂点积(内积).叉积(外积).Unity游戏开发--向量运算(点乘和叉乘 说明 点积可以 ...