Shell脚本笔记(一)一些零碎的基础知识

一些零碎的基础知识

一、认识Shell脚本

一)相关概念

Shell是一种命令解释器,作用是按次序执行(遇到子脚本,先执行子脚本的命令)用户输入的命令和程序。

Shell脚本语言是弱类型语言,与其他脚本语言相比的优势是可以处理偏操作系统底层的业务。

查看系统默认Shell:

#方法一:
echo $SHELL
#方法二:
grep root /etc/passwd

二)开发规范

1)脚本第一行指定解释器

#!/bin/bash 

2)开头添加版本、版权等信息

3)脚本中尽量不要用中文

4)扩展名为.sh

5)脚本应放在固定路径下

三)执行方法

1)bash script-name或者sh script-name: 脚本没有x权限或者脚本开头没有指定解释器时,可用此方法,此方法也是常见的方法。

2)path/script-name:当前路径下执行脚本,脚本要有x权限。

3)source script-name 或者 . script-name:在当前shell中直接运行脚本(其他方式会开启新的shell),因此可将该脚本中的变量或者函数传递到当前shell中。

四)重定向和管道

1)输出重定向

将命令的输出发送到一个文件中(每次都会新创建文件):

ls -al > list.txt

如果不想每次都新建文件,可以追加:

date >> list.txt

2)输入重定向

将文件内容发送给命令,当做相关参数:

ls -al < in.txt

内联输入重定向:

无需文件中的数据,将标记中的数据重定向给命令,其语法格式为:

command << MARKER
data
MARKER

3)管道

使用管道将一个命令的输出当做另一个命令的输入,其语法格式为:

command1 | command2

五)脚本调试

1)用bash命令参数调试

sh [-nvx] script.sh

-n:不执行脚本,仅检查脚本语法,并给出错误提示

-v:执行脚本前,先将脚本内容输出到屏幕上,并给出错误提示

-x:将脚本内容及输出显示到屏幕上,逐行追踪脚本执行

2)使用set命令进行调试

与bash命令相比set命令可以控制追踪范围

set -n:读命令但不执行

set -v:显示读取的所有行

set -x:显示所有的命令及其参数

# !/bin/bash
echo 1
set -x         #开启脚本调试
echo 2
echo 3
echo 4
set +x         #关闭脚本调试
exit 0

运行结果:

1
+ echo 2
2
+ echo 3
3
+ echo 4
4
+ set +x

六)其他

执行多个命令:

放在同一行用分号隔开

ls ; date ; who

命令替换:

从命令输出中提取信息,并将其赋值给变量。

方法一:

d=$(date)

方法二:

d=`date`
Simple is important!
原文地址:https://www.cnblogs.com/Shadowplay/p/8309717.html