加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

【Shell】Shell语法总结以及简易内存条的实现

发布时间:2020-12-15 16:42:29 所属栏目:安全 来源:网络整理
导读:基本语法 Shell文件的开头 Shell的开头需要写成 #!/bin/bash #!这个符号是表示,让系统去调用后面的的参数来解释执行该文本的程序 除此之外,还有下列可以用的解释器 /bin/sh/usr/bin/es/usr/bin/ksh/bin/ksh/usr/bin/rc/usr/bin/tcsh/bin/tcsh/usr/bin/esh/

基本语法

Shell文件的开头

Shell的开头需要写成

#!/bin/bash

#!这个符号是表示,让系统去调用后面的的参数来解释执行该文本的程序

除此之外,还有下列可以用的解释器

/bin/sh
/usr/bin/es
/usr/bin/ksh
/bin/ksh
/usr/bin/rc
/usr/bin/tcsh
/bin/tcsh
/usr/bin/esh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen

Shell进行注释

# 符号代表的是改行后面的内容注释

变量

如何定义变量

shell中进行变量的定义时,不需要对变量进行声明,可以直接赋值

应用变量时,用“ $” + 变量名即可访问变量的内容

注意:

赋值时,等号左右两边不可有空格。因为shell脚本的内容是由解释器进行解释运行的

如果等号进行了空格,便将对变量的赋值视为指令,造成错误

特殊变量

$0

相当于C语?言main函数的argv[0]

$1、$2...

这些称为位置参数(Positional Parameter),相当于C语?言main函数 的argv[1]、argv[2]...

$#

相当于C语?言main函数的argc - 1,注意这?里的#后?面不表?示注释

$@

表?示参数列表"$1" "$2" ...,例如可以?用在for循环中的in后?面。

$?

上?一条命令的Exit Status

$$

当前Shell的进程号

定义数组

在Shell中,?用括号来表?示数组,数组元素?用“空格”符号分割开。
定义数组的?一般形式为:
array_name=(value1 ... valuen)
arr=( "hello" "world" "!!!" )

Arr[0]="hello"
Arr[1]="world"
Arr[2]="!!!"

echo ${arr[*]}
echo ${Arr[*]}

流程控制语句

if语句

if [ 10 -gt 20 ] #如果10大于20
	echo "10 > 20" #打印这句话
else 
        echo "10 < 20" 
fi
和C语言不同,if语句的判断需要加方括号

并且if和 ‘[’ 以及后面的内容都要保持空格分开,原因同上

结尾注意以 fi 结束

&&和||快捷操作符

	echo "Usage $0 data1 ... dataN"
	exit 1
}
&&符号表示的是,如果&&左边的条件满足,便执行&&右边的指令

而不同的是,||表示如果左边的条件没有满足,才执行右边的指令

()运算符

为了在当前shell中执行一组命令,可以用命令分隔符(即",")隔开每一个命令,并把所有的命令用圆括号()括起来。

case语句

类似于C语言中的Switch,case语句

read n

case $n in 
	1 ) 
		echo "The num is 1"
		;;
	2 )
		echo "The num is 2"
		;;
	*)
		echo "The num is not 1 or 2"
esac

while语句

从1打印到10

i=1
while [ $i -le 10 ]
do	
	echo $i
	let i++
done

for语句

for循环和C语言有很大差别

从1打印到10

i=1
for i in {1..10}
do
	echo $i
done

函数的定义

function myfun()
{
	return 0
}
如此,便定义了一个简单的函数

需要注意的是,函数体不可以为空

函数可以被认为是一个程序或者小脚本

当该函数被调用时,则会产生新的子进程来执行该函数内部的指令

可以用return 来返回子进程结束的退出码

也可以用echo来返回该函数返回的字符串

脚本的调试

选项

Shell提供了?一些?用于调试脚本的选项,如下所?示:
-n
读?一遍脚本中的命令但不执?行,?用于检查脚本中的语法错误
-v
-x
提供跟踪执?行信息,将执?行的每?一条命令和结果依次打印出来

三种调试方法

命令行提供参数

$ sh -x ./script.sh

脚本开头提供参数

#! /bin/sh -x

利用set命令来启用或者禁用参数

set -x和set +x分别表?示l和禁?用-x参数,这样可以只对脚本中的某?一段进?行跟踪调试。

简单进度条的实现

#!/bin/bash

i=0
index=0
arr=( '|' '' '-' '/')
str=''
while [ $i -le 100 ]
do
	index=i%4
	printf "[%-100s][%d%%][%c]r" "$str" "$i" "${arr[$index]}"
	str+='#'
	let i++
	sleep 0.1
done

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读