shell脚本基础知识

1.shell脚本是一种非编译,弱类型的语言,解释型语言
弱类型 不需要声明直接使用
解释型 执行之时,不需编译直接执行

2.shell的作用:
解释执行用户的命令;
用户输入一条命令,shell就解释一条,交互式;
用户事先写一个shell脚本(Script),其中有很多命令,让shell一次把这些命令执行完,而不用一条一条地敲命令,批处理(Batch )

3.解释执行,不需编译:
shell脚本是解释执行的,不需要编译,shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本命令一行一行敲到shell提示符下进行。

4.shell执行脚本
例如编写一个 test.sh 脚本
#!/bin/bash
echo “Today is a good day!”
cd ..
ls
shell脚本#表示注释,如果# 位于第一行开头,它表示该脚本使用后面指定的解释器/bin/bash解释执行。
*执行方式1. chmod +x test.sh
shell会fork一个子进程并调用exec执行 ./test.sh这个程序,exec系统调用把子进程的代码段替换成 ./test.sh程序的代码段,并从它的_start开始执行。第一行用Shebang 指定了解释器,则用解释器程序的代码段替换当前进程,并且从解释 器的_start开始执行,而这个文本文件被当作命令行参数传给解释器。因此,执行上述脚本相当于执行程序 。
* 执行方式2. /bin/bash test.sh
如果将命令行下输入的命令用()括号括起来,那么也会fork出子Shell执行小括号中的命令, 一 行中可以输入由分号;隔开的多个命令,比如: $ (cd ..;ls -l)

5.shell脚本变量
变量作左值不加空格,作右值要加,

符号提取内容。shell中变量不用定义直接使用。
myint=123
echo myint

,取变量值时用$,shell变量的值都是字符串,如果对一个没有定义的变量取值,则值为空字符串。

shell变量:环境变量和普通变量
环境变量 可以被子进程及其子孙进程继承的变量;
普通变量:只能在当前bash下有效,只存在于当前shell进程,用set命令可以显示当前shell进程中定义的所有变量包括环境变量和本地变量。
echo 输出命令自动打印空行 (echo命令是一条內建命令)
myenv=1234 在命令行上编译,交互式bash下定义变量。
echo $myenv 结果为1234
export myenv 把myenv导成了环境变量
环境变量是任何进程都有的概念,否则会被shell解释成命令和命令行参数。
unset命令可以删除已定义的环境变量或本地变量
6.shift 命令行参数左移
这里写图片描述

7.文件名代换
*匹配0个或多个任意字符
?匹配一个任意字符
[若干字符] 匹配方括号中出现的任意一个字符的一次出现

8.命令代换
例如:
#!/bin/bash
echo “Today is date +%Y:%m:%d
echo “Today is $(date +%Y:%m:%d)”

echo “Today is ‘date +%Y:%m:%d’”
运行结果:
这里写图片描述
9.转义字符 \
\在shell中被用作转义字符,用于去除紧跟其后的单个字符的特殊意义,紧跟其后的字符取字面值。

这里写图片描述
10.双引号和单引号
单引号双引号都表示字符串,单引号对所有内容不做解释,双引号对变量转义会执行后再进行输出。
注意:
“““““““““““
”””””””””””””””””’
不一样,第一行的会把命令行中的date代换成日期,第二行的还是把它当做字符串打印出来。

Vim设置
Vim里面 set nu 设置行号 set nonu去掉行号 如果要复制Vim里面的内容有行号不太方便
可以选择去掉行号后再复制
这里写图片描述

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98465

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班