声明执行程序
#!/bin/bash

用来告诉系统使用/bin/bash 程序来执行该脚本。譬如python 脚本,可以这样写:

#!/usr/bin/python
 
赋值和引用

赋值公式:

变量名=值

取一个变量的值的时候,需要在变量名前面加上$ 符号,譬如:

var="hello bash"
echo $var

如果出现拼接,而且又没有空格为分隔符,这个时候就需要使用大括号将变量括住,如:

num=
echo "this is the ${num}th"

其输出结果为:this is the 3th

shell默认下是进行字符串操作的。所以如果要计算的话就不能这么使用了

var=
var=$var+
echo $var

其输出结果为:1+1

对于数值计算的话有下面的方法

var=
let "var+=1" # let表示数学运算
var="$[$var+1]" # $[]表示对括号内的表达式进行数学运算,与(())感觉概念是一样的
((var++))
var=$(($var+))
var="$(expr "$var" + 1)" # expr表示整数运算
var="`expr "$var" + 1`"
嫌太乱的话,建议记住(($var+1))就好了。只需要记住两个括号内的内容会进行计算就好了。
 
流程控制

if语句

if ...; then
...
elif ...; then
...
else
...
fi

一些常见的判断

[ -f "file_path" ]     # 判断文件是否存在
[ -x "file_path" ] # 判断文件是否具有可执行权限
[ -n "$var" ] # 判断$var变量是否存在
[ "$var1" = "$var2" ] # 判断$var1和$var2是否相等

[]用来表示条件测试。注意空格,括号前后都需要空格。

&&和||
跟其它大部分语言一样,&&和||的意思都是差不多的。
&&:如果第一个条件为ture则检查第二个条件/执行第二条语句;
||:如果第一个条件为false则检查第二个条件/执行第二条语句;
所以就可以这么用了:

[ -r "${file_path}" ] || { echo "Cannot read ${file_path}";exit ; }

意思是,如果文件不可读,则打印错误信息,并退出。

case语句
case是一个用来匹配字符串的表达式,不是数字哦。
case表达式

case ... in
...)
...;;
esac

例子

#!/bin/bash

case "$1" in
"")
echo ;;
"")
echo "two";;
*)
echo "your input is $1";;
esac

循环
while表达式

while ...; do
...
done

for表达式

for var in ...; do
...
done

这两个表达式都比较简单,没啥需要特别说明的。我发现不同的系统之间有些差异。我发现红帽是可以使用下面的表达式的,但是Debian却不可以。不知道是系统版本引起还是系统本身存在差异的缘故,我没有深究这个。

for ((i=;i++;i<)); do
... done
 
shell函数
function_name(){
#body of function
}

函数无论对于任何语言来说都是需要最基本掌握的。Shell的函数只需要在调用之前定义就好了。跟C语言一样,但不需要声明,跟C语言还是有区别的。
Shell函数定义的时候不用写形参。调用的时候按照空格隔开多个参数传入就可以了。然后使用$1、$2、$3...这些参数来调用。
下面是一个简单的递归调用例子:

#!/bin/bash

recursion(){
echo $;
if [ "$1" -eq "" ]; then
echo "done"
else
recursion $(($-))
fi
}
echo "start";
recursion ;
上面虽然是一个很简单的例子,但是阐述了函数如何调用,如何传参。

[Linux]shell编程基础/linux基础入门的更多相关文章

  1. Linux shell编程命令-Linux基础环境命令学习笔记

    1.正则表达式 1)^开始 *前一个字符重复0次以上 + 1次以上 ? 0次或者1次 . 一个任意字符(.*连用) {m,n} m到n次 [0-9][a-z] 任意数字或字母 $结束字符 2)sed和 ...

  2. Linux Shell编程参考大全

    本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...

  3. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  4. linux —— shell 编程(编程语法)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...

  5. Linux Shell编程与编辑器使用详解

    <Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...

  6. linux shell 编程参考

    #!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(m ...

  7. 一文学完Linux Shell编程,比书都好懂

    一. Shell 编程 1. 简介 Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务. Shell 既是一种命令语言,又是一种程序设计语言. Shell scr ...

  8. linux shell编程总结

    linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...

  9. (C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹

    原文 (C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) Windows Shell 编程,即 Windows ...

  10. Linux Shell编程中的几个特殊符号命令 & 、&& 、 ||

    https://blog.csdn.net/hack8/article/details/39672145 Linux Shell编程中的几个特殊符号命令 & .&& . || ...

随机推荐

  1. HTTP -> Asp.net (第一篇)

    当用户在浏览器输入一个URL地址后,浏览器会发送一个请求到服务器.这时候在服务器上第一个负责处理请求的是IIS.然后IIS再根据请求的URL扩展名将请求分发给不同的ISAPI处理. 流程如下: 1.I ...

  2. mysql select不使用任何锁(select with nolock)

    在ms sql中可以通过with(nolock)选项指定查询不锁表,在mysql中没有这个选项,需要通过set语句来设置不锁表: SET TRANSACTION ISOLATION LEVEL REA ...

  3. Luci流程分析(openwrt下)

    1. 页面请求: 1.1. 代码结构 在openwrt文件系统中,lua语言的代码不要编译,类似一种脚本语言被执行,还有一些uhttpd服务器的主目录,它们是: /www/index.html cgi ...

  4. codecomb 2091【路径数量】

    好久没有更新博客了啊……屯了一堆题没发呢 这是丧心病狂的hzwer每日NOI模拟赛第一天的第一题 妈蛋说好的NOIP难度图论算法两题网络流!让我说什么好 唔……codecomb的页面在晚上就会变得很奇 ...

  5. uva 101 by sixleaves

    这是一道很好的模拟题,用vector<int> p[maxn],建立模型,映射为maxn个堆.主要要掌握vector模拟堆操作的简单方法.接下来得思路是自顶向下的方式,逐步完善程序.首先根 ...

  6. 内存映射与DMA

    1.mmap系统调用的实现过程,该系统调用直接将设备内存映射到用户进程的地址空间. 2.用户空间内存如何映射到内核中(get_user_pages). 3.直接内存访问(DMA),他使得外设具有直接访 ...

  7. Python中的深浅拷贝,赋值及引用

    简单来说,若对象a中存的是列表或字典等可变对象,b对a的浅拷贝只是对对象第一层的复制,修改b第二层的元素仍然会影响两个对象. 深拷贝则是不会影响原来的对象. import copy.copy() 浅拷 ...

  8. 学习《Python核心编程》做一下知识点提要,方便复习(一)

    学习<Python核心编程>做一下知识点提要,方便复习. 计算机语言的本质是什么? a-z.A-Z.符号.数字等等组合成符合语法的字符串.供编译器.解释器翻译. 字母组合后产生各种变化拿p ...

  9. 自定义视图控制器切换(iOS)

    在iOS开发过程中,通常我们会使用UINavigationController,UITabbarController等苹果提供的视图控制器来切换我们的视图.在iOS5之前,如果要自定义容器视图控制器很 ...

  10. .net如何后台批量删除

    button_Click(Sender sender,Event e){foreach (DataListItem item in DataList1.Items){CheckBox cbox=(Ch ...