shell基础入门(1)
shell--操作系统的外壳,它是一个应用程序,用于连接用户与linux内核。用户可以通过shell命令来控制操作系统,由这些shell命令组成的执行文件则为shell脚本.sh。编译型语言执行前已经预编译成了目标代码,非常接近计算机底层,因此执行效率很高,而shell脚本语言是一种解释型语言,每次运行时要先从源代码编译成目标代码,效率有所降低。
touch haha.sh 创建新的bash文件,写入以下内容:
#!/bin/bash
echo "helloworld"
脚本开头#!/bin/bash,#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell,这里指定bash。chmod u+x helloworld.sh给予权限(不同权限命令百度一哈)后,./helloworld.sh执行。加不加./的区别在于加上是在当前目录找,不加是在PATH中找,PATH下多半是没有的。
shell中有三种变量:局部变量--生命周期只在该实例中有效;环境变量--如export LOOP_TIME=100;shell变量--由shell程序设置的特殊变量。创建变量赋值时等号左右不能有空格!---- name=“handsomeboy”; 创建函数体内有效的局部变量local name=。。。;只读变量readonly name=。。。; 使用变量echo ${name}; 删除变量unset name。获取长度用#号echo ${#name}输出11;截取部分长度echo ${name:1:3}从第二个字符开始取3个,echo ${name::4}从第一个字符开始取4个;bash中只支持一维数组,数组定义方式为:haha=(you are a handsome boy),括号括起、空格分隔。echo ${haha}输出you,echo ${#haha[@]}输出5(@在此表示取所有元素),echo ${#haha[0]}输出3,echo ${haha[1]}输出are;参数传递中$0表示文件名,$1-n表示输入的第1-n个参数,$#表示所有参数的个数,$* 与 [email protected]都是引用所有参数, 区别在于双引号的使用,比如三个参数 1、2、3,则 " * " 等价于 “1 2 3”(传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个参数)。
原生bash不支持数学运算,但是可以通过expr来实现。乘号*前必须加\进行转义才可以进行乘法运算。
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
-eq:左右相等equal;-ne不相等;-lt左小于右less than;-gt左大于右greater than;-ge大于等于;-le小于等于,使用方式如 [ $a -gt $b ] ;
if [ $a -ne $b ]
then
echo "$a -ne $b: a 不等于 b"
else
echo "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
then
echo "$a -gt $b: a 大于 b"
fi
对于字符串而言,-z长度为0则true,if zero, [ -z $a ] ;-n长度为0返回false;$为空返回false,=相等,!=不相等,[ $a != $b ] ;str 不为空则true。
!非运算,-a与运算,-o或运算,[ $a -lt 20 -o $b -gt 100 ] ;&& 逻辑and,||逻辑或, [[ $a -lt 100 || $b -gt 100 ]]。
if [[ $a -lt 100 && $b -gt 100 ]]
then
echo "返回 true"
else
echo "返回 false"
fi
使用[[ … ]]条件判断结构,能够防止逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不适用双括号, 则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ]。
流程控制中,if ...then ...elif ..then..else..then..fi; for xx in xxx do... done; while xx do ... done;case a in b) ...;; esac. 分号在此表示不再匹配下面的模式,if与fi、case与esac对应。break跳出,continue跳出当前循环。
case 值 in
模式1)
//做你想做的事
;;
模式2)
//做你想做的事
;;
*)
//做你想做的事
;;
esac
shell中使用函数与其他语言类似,必须先定义了之后才能使用。
#!/bin/bash
haha(){
echo "hello world!"
}
echo "-----函数开始执行-----"
haha
echo "-----函数执行完毕-----"
使用"\"进行长句换行,不同于Enter的直接换行,使用"\"语句仍被当做一句来执行。
bash -n xx.sh检查是否有语法错误, bash -x xx.sh执行并调试脚本。
上一篇: 简单的爬虫框架——百度百科
下一篇: Python爬虫入门笔记
推荐阅读
-
shell基础入门(1)
-
shell入门1
-
阿里Java学习路线:阶段 1:Java语言基础-Java面向对象编程:第23章:包的定义及使用:课时104:生成jar文件
-
吐血整理--shell编程基础命令(二)
-
新手学习PHP的一些基础知识分享_php入门_脚本之家
-
shell 脚本 >/dev/null 2>&1 $ $* $$ $?................................含义
-
Shell入门知识1——基础认识
-
linux shell >/dev/null 2>&1解释
-
Shell 中 &>/dev/null 和 >/dev/null 2>&1
-
SHELL基础知识点整理