shell基础

向一位计算机学院的朋友学习,共同交流学习上的认识,取长补短,两个人喜好兴趣甚至价值观相同,从不互相阿谀逢迎,让我有种找到知己的感觉。以人为镜可以知得失,再次相会,吾俩这半年付出了相同的时间得到的和失去了什么?计算机科学系,所习技术知识比鄙人全面、系统。遂借来书籍,以补不足。

导读:

什么是shell?

为什么用shell?

怎么用?

shell编程

什么是shell?

shell基本上是一个命令解释器,类似于DOS下的command。用于接收用户命令(如ls等)。shell编程就是把与系统内核交互的相关命令按照规范的格式组织到一起,形成的文件就构成了shell脚本程序。

为什么用shell?

在各种操作系统中,用户都要通过特定的界面与系统内核打交道,达到运用计算机解决问题的目的。shell是用户和内核交媒介的一种。合理的运用shell程序可以提高计算机的工作效率,为用户管理和使用计算机提供便利。

怎么用shell?

使用一门语言首先要明确目的 -- 要实现什么效果,其次要掌握语言的语法,只有正确的语法才能正确的使用语言工具,最后要形成具体的算法逻辑来实现你的想法。如果都没问题了,那么开始吧!

三-语法:

3.1-bash程序设计:

一个简单的shell程序示例

#! /bin/bash 
# a simple shell script example :
# a say hello function
function say_hello(){
    echo -n "Please Enter Your Name :"
    read name
    echo "$name : hello world ! "
}

echo "The Programme Starts Here ... "
say_hello
echo "The Programme Ends . "

$ bash helloWorld.sh

运行效果:

体会

定义了 用户函数say_hello(),{

echo打印字符串,read读取中隐式定义一个变量并从键盘赋值,$变量名 去引用方才的变量}

直接使用函数名来调用函数,

Q:导包呢?main函数呢?暂时不需要还是用不到?隐式声明方便了用户还是简化了解释器?弱数据类型优缺点在哪?

不用分号和显示声明变量码代码简直爽爆了hhh

第六门语言学起来终于不再举步维艰,学java时淡忘了c指针c++引用,学完shell希望不要丢了显示声明和分号haha.

3.2-变量的声明和使用:

声明:隐式声明,弱数据类型

隐式声明意味着变量不需要声明就可以使用,弱数据类型就是说对变量类型不严格要求,这样使得脚本语言变得十分灵活,但是,对变量的类型检查任务就落到了程序开发者自己肩上了,解释器会为你做什么呢?

赋值: 变量名=值            *不能留空格

使用

引用: $ 、${}

例如:

a="hello world"
b="please enter your name:"

echo "$b "
read name
echo "{$name}:${a}"


3.3-运算符:

算数运算符:

  1. + 加法运算符
  2. -  减法(取负)运算符
  3. *  乘法运算符
  4. /  整除运算符(不接受浮点 ,计算浮点需要调用计算器 bc awk [例link]
  5. % 取模运算符

逻辑运算符:&&  ||   !   !=  ==  >  >=  <  <=

  1. && 逻辑与:当且仅当左右表达式的值都为真的时候返回真
  2. ||     逻辑或:只要左右表达式有一个值为真,就返回真
  3. !   逻辑非:(取反),对右边表达式值(真假)取反
  4. != 不等于:若左右两边表达式的值不相等,则返回真,否则返回假
  5. ==   等于     :若左右两边表达式的值相等,则返回真,否则返回假
  6. >   >=  大于/大于等于:当左边的表达式的值大于/大于等于右边的值时,返回真,否则返回假。<  <= 小于/小于等于 相反。

赋值运算符:

  1. +=
  2. -=
  3. *=
  4. /=
  5. %=

 

*位运算符:<<  >> &  |   ~   ^

*位运算赋值运算符:<<=  >>=  &=  |=  ~=  ^=

表达式的计算:


expr [表达式]  计算一个表达式的值  #需有空格  (详细具体的例子见 link-> [github 源码])

expr 3 + 5

let [表达式1][表达式2]  (具体的例子见 link-> [github 源码])

let s=(3+5)*15


3.4-条件判断:

测试文件属性

test

[]

测试字符串属性

str1 = str2

3.5-控制结构:

if fi

case

for

while/until

3.6-函数:

function funName(){

}

3.7-程序示例:

自己动手敲一个能跑的,

  • 自动文件备份{backup、log}
  • 自动搭建开发环境{service、server、deveKit}

小结:

学习途中遇到的问题:

Q1:0真1假,但是if [ 0 ] 为真的 真相 [ link ]

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值