shell基础学习一
Posted 叶落kiss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell基础学习一相关的知识,希望对你有一定的参考价值。
说明: 虚拟机中shell_test目录用来练习shell, 其中有个test.log文件用来存放日志
#!/usr/bin/bash # shell文件开头, 用来指定该文件使用哪个解释器执行
通常#!成为shebang, 如果命令行中不指定解释器时才会生效, 否则以命令行中指定的解释器为准
1. echo $? # 用来检查上次命令的执行状态, 如成功返回0, 不成功则非0
2. ping -c10 www.baidu.com &> /shell_test/test.log && echo "ping 成功执行了" || echo "ping执行失败了"
-c10 # 表示使用本机ping后面的网址10次
&> # 表示把命令执行的经过输入到指定的位置
&& # 命令执行成功后要干的事, 可理解为if true
|| # 命令执行失败后要干的事, 可理解为else
3. linux命令都可以放入文件中通过bash调用来执行, 或者把文件设置为可执行文件, 比如2中的命令放到
qzq.sh文件中, 在命令行可使用: bash qzq.sh来调用, 其会自动执行文件中列出的命令, echo的内容会
输出到窗口, 执行过程中的输出会写入到$>指定的地方.
补充: 使用sh来调用执行可以, sh可理解为bash的软连接; 修改文件属相使用chmod命令. chmod 777 qzq.sh
4. if判断书写规范, if后跟条件或命令, 条件时需使用[], 条件true时执行then后逻辑. 如果跟命令, 则在命令成功
执行后走then逻辑, 注意使用命令时不能使用[]. 编写规范如下(then可和if在一行;建议使用4个空格区分逻辑):
5. 在一段shell脚本中, 如何在中间插入执行一段python代码呢?
/usr/bin/python << -EOF print("hello world") EOF # 把需要执行的python脚本重定向到python解释器中即可.
EOF就是个标记, 需要大写且成对, 可换成任意字母都行,通常结束位置的标记需要放到单独一行的行首.
-的用处可使得结束位置标记前可以有空格, 即不从行首开始.
特别注意: EOF前有-时, 和输出重定向符号之前绝对不能有空格, 否则会报错的.
6. 一个有执行权限的shell脚本还可以通过 . qzq.sh 或者 source qzq.sh来执行, 区别如下: 使用相对位置执行或
bash或sh时, 如shell中有cd目录, 这3中执行方式的窗口路径不会发生改变.因为是在sub shell 即子shell中执行;
而. 或者source是在当前目录中执行脚本中的命令.
以上是关于shell基础学习一的主要内容,如果未能解决你的问题,请参考以下文章