【Shell】Shell语法总结以及简易内存条的实现
基本语法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提供了?一些?用于调试脚本的选项,如下所?示: 三种调试方法命令行提供参数
$ 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |