shell笔记(基本知识)

一、编写第一个shell程序

实例1:

【程序】

1 #!/bin/sh
2 echo "hello word !"

【运行】

【说明】

第一行:#i/bin/sh  表示使用Ubuntu系统中/bin/sh下的一个解释器来解释shell,进行运行。

第二行:echo "hello word !"  表示打印“hello word”这个字符

另外在shell中 # 是用来注释的

二、shell中的变量

(1)变量定义:直接使用=即可

(2)变量赋值:直接使用=

(3)变量引用:变量前面在$;(两种用法:$var 和 ${var} )

实例2:

1 #!/bin/sh
2 string="new string"
3 echo $string

运行结果:

三、单引号和双引号的区别

实例3:

1 #!/bin/sh
2 # 单引号和双引号演示
3 str="new string"
4 echo ‘$str‘
5 echo  $str
6 echo "$str"

运行结果:

说明:单引号表示直接的替换,即使有$符号,也是直接输出$str;

双引号中使用$会将变量的值的读取出来使用。

注意:反引号表示命令替换,例如:

\$表示$

\`表示`

\"表示"

\\表示\

参考资料:http://blog.csdn.net/miyatang/article/details/8077123

四、调用linux下的命令

实例4:

1 #!/bin/sh
2 # 在linux下调用命令
3 mkdir test_dir   # 在当前目录下创建一个目录
4 cd test_dir      # 进入test_dir目录
5 touch a.c        # 创建一个文件
6 cd ..            # 返回上层目录
7 echo `pwd`       # 打印当前目录

说明:在shell脚本程序中,使用linux下的命令是直接调用的。关于获取linux命令的返回值是使用反引号(键盘上ESC下面的那个按键,符号是`)。

五、if结构

典型表达式:

if [表达式]; then

xxx

else

xxx

fi

应用:

(1)判断文件是否存在。(-f),使用举例:if [ -f b.c ]; then

(2)判断目录是否存在。(-d),使用举例:if [ -d "/mnt" ]; then

(3)判断字符串是否相等。(=),使用举例:if [ "abc" = "abc" ]; then

(4)判断数字是否相等(-eq)、大于(-gt)、小于(-lt)、大于等于(-ge)、小于等于(-le)。使用举例:if [ $num1 -eq $num2 ]; then

(5)判断字符串是否为空。(-z),使用举例:if [ -z "abc" ]; then

注意:在[]中的空格,前后都需要空格,否则会运行错误。

(6)if判断式中‘-o‘表示逻辑或。使用举例:if [ "1" = "2" -o "3" = "3" ]; then

(7)逻辑与&&和逻辑或||与简写的if表达式相结合

例如:

[ "123" = "abc"  ] || echo "not equal"  # 执行结果:输出not equal

[ "123" = "123" ] && echo "equal"       # 执行结果:输出equal

说明:在||中,前面的语句如果成立,则后面的命令不执行;如果不成立,则后面的命令执行。

六、echo创建文件

(1)在shell中可以直接使用echo指令创建一个新的文件

例:echo "abc" > a.txt  # 创建一个文件,内容和abc

(2)>>表示在文件末尾追加一个内容

例:echo "cde" > a.txt  # 在文件末尾追加一个字符"cde"

九、shell的传参

例:shell程序

运行结果:

$0是执行这个shell程序的解析的名字,$1是第一有效参数的值,$2是第二个……

六、for、while循环和case结构

实例5:

1 while [ $# -gt 0 ] ; do
2         case "$1" in
3         --) shift ; break ;;
4         -a) shift ; APPEND=yes ;;
5         -n) shift ; BOARD_NAME="${1%%_config}" ; shift ;;
6         *)  break ;;
7         esac
8 done

(1)上面是一个while和case嵌套的一个例子。

(2)break对case是没有作用的,表示的是跳出while循环。

(3)case中语句是以;;作为结尾的。

(4)shif是表示输入的参数左移一个。

(5)$#表示执行shell时传递的参数个数

(6)$1表示shell的第一个参数

----------------------------------------------------------------------------------

  声明:部分内容摘录至《朱老师物联网视频教程》http://www.zhulaoshi.org/

----------------------------------------------------------------------------------

时间: 2024-10-29 19:08:20

shell笔记(基本知识)的相关文章

几个shell程序设计小知识(shell常识部分)

[转自]http://blog.chinaunix.net/uid-168249-id-2860686.html 引用:一.用户登陆进入系统后的系统环境变量:  $HOME 使用者自己的目录  $PATH 执行命令时所搜寻的目录  $TZ 时区  $MAILCHECK 每隔多少秒检查是否有新的信件  $PS1 在命令列时的提示号  $PS2 当命令尚未打完时,Shell 要求再输入时的提示号  $MANPATH man 指令的搜寻路径 二.特殊变量: $0 这个程序的执行名字  $n 这个程序的

《软件调试的艺术》笔记--预备知识

1.gcc的-g选项 如果要使用gdb进行调试,必须在编译时在gcc中加入-g选项,使用参数 -g 表示将源代码信息编译到可执行文件中. 如果不使用-g选项: #include <stdio.h> int main(void) { int i = 1; i = i + 1; printf("i = %d\n",i); return 0; } gcc main.c gdb a.out (gdb) b main Breakpoint 1 at 0x4004f8 (gdb) r

hadoop学习笔记——基础知识及安装

1.核心 HDFS  分布式文件系统    主从结构,一个namenoe和多个datanode, 分别对应独立的物理机器 1) NameNode是主服务器,管理文件系统的命名空间和客户端对文件的访问操作.NameNode执行文件系统的命名空间操作,比如打开关闭重命名文件或者目录等,它也负责数据块到具体DataNode的映射 2)集群中的DataNode管理存储的数据.负责处理文件系统客户端的文件读写请求,并在NameNode的统一调度下进行数据块的创建删除和复制工作. 3)NameNode是所有

【转】Linux shell笔记

由于工作的需要,越来越多的接触到linux系统.最近看了<Linux与Unix Shell>这本书,安装书的章节整理了一些自己认为比较重要的命令,方便以后查阅. No.001 文件安全与权限 1. umask 决定了新建文件的权限 2. 软链接(符号链接) ln -s source_path target_path No.002 find和xargs 1. find pathname -options [-print -exec -ok]    其中exec参数的命令格式: 'command-

较详细介绍IBM AIX操作系统上常用的korn shell的基础知识

[导读]较详细介绍IBM AIX操作系统上常用的korn shell的基础知识. Korn Shell执行命令的顺序1.关键字,如if,for,function等2.别名(Aliases)3.内部命令,如cd, whence和函数等4.函数Functions5.脚本Scripts.在PATH中的可执行程序※找到命令的根源用下面的命令:whence -v command或:type commandAlias(别名)alias aliasname=command取消一个别名:unalias alia

什么是Shell?Shell脚本基础知识详细介绍

这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁.Shell既是一种命令语言,又是一种程序设计语言.作为命令语言,它交互式地解释和执行用户输入的命令:作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支. 它虽然不是Linux系统核心

shell复习笔记----入门知识

Unix 简史 UNIX 最初是由贝尔实验室(Bell Telephone Laborataries)的计算机科学研究中心开发的,第一版诞生于1970年--也就是在贝尔实验室退出Multics项目不久.在 UNIX 广受欢迎的功能中,有许多便是来自Multics 操作系统. 它有下列优势: 系统由用户自行开发.他们使用这套系统来解决每天遇到的计算问题. 研究人员不受拘束地进行试验,必要时也可以任意变换程序. 贝尔实验室的研究人员都是计算机科学家,他们所涉及的系统不单单自己使用,也分享给同事们--

Bash shell 笔记总结(一) 转自http://www.bubuko.com/infodetail-509992.html,谢谢原作者

本文是上课笔记总结,涉及细节知识点会在以后文章说明! bash脚本编程: 脚本程序:解释器解释执行: shell: 交互式接口:编程环境: shell: 能够提供一些内部命令,并且能通过PATH环境变量找到外部命令:把命令提交给内核启动为进程: 编程环境: 流程控制语句: 顺序执行: 循环执行: 选择执行: 条件测试:真.假 $? 命令的状态结果: 0: 真 1-255: 假 过程式的编程语言的元素:变量.流程.函数.数组 变量:局部变量.本地变量.环境变量.位置参数变量.特殊变量 变量: 数值

shell脚本基础知识(下)

七.shell中的case判断 格式: case  变量名 in value1) command ;; value2) command ;; *) commond ;; esac 在case程序中,可以在条件中使用|,表示或的意思, 比如: 2|3) command ;; 当变量为2或者3时,执行该部分命令. 应用举例: [ [email protected]  shell]# cat test7.sh  #!/bin/bash read -p "请输入学生的成绩: " num n1=