1. 管道和重定向

文件描述符0:一个程序的标准输入

文件描述符1:标准输出

文件描述符2:标准错误输出

>操作符:把标准输出重定向到一个文件。

>>操作符:将输出内容附加到一个文件中。

|操作符:连接进程。

2. 作为程序设计语言的shell

2.1 创建脚本

注释以#符号开始。

#!字符告诉系统同一行上紧跟在它后面的寻附上参数是用来执行本文件的程序。

2.2 把脚本设置为可执行

chmod +x first

3. shell的语法

3.1 变量

默认情况下,所有变量被看作字符串并以字符串来存储。如果字符串里包含空格,必须用引号把它们括起来。

在shell中,通过在变量名前加 一个$符号来访问它的内容。当为变量赋值时,只需变量名。

zhangxin@zhangxin-VirtualBox:~/mypro$ salutation=hello
zhangxin@zhangxin-VirtualBox:~/mypro$ echo $salutation
hello
zhangxin@zhangxin-VirtualBox:~/mypro$ salutation = 'hello world'
salutation:未找到命令
zhangxin@zhangxin-VirtualBox:~/mypro$ salutation='hello world'
zhangxin@zhangxin-VirtualBox:~/mypro$ echo $salutation
hello world
zhangxin@zhangxin-VirtualBox:~/mypro$ salutation=+
zhangxin@zhangxin-VirtualBox:~/mypro$ echo $salutation
+

使用read命令将用户的输入赋值给一个变量。

zhangxin@zhangxin-VirtualBox:~/mypro$ read salutation
ni hao , xiao ming
zhangxin@zhangxin-VirtualBox:~/mypro$ echo $salutation
ni hao , xiao ming

与PHP语法类似,把带有$字符的变量放在双引号中,程序执行到这一行时会把变量替换为它的值;

如果把它放在单引号中,就不会发生替换现象。

在$字符前面加上一个\字符,会取消它的特殊含义。

#!/bin/sh

myvar="Hi there"

echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar echo Enter some text
read myvar echo '$myvar' now equals $myvar
exit
~

执行这个脚本:

zhangxin@zhangxin-VirtualBox:~/mypro$ ./myvar.sh
Hi there
Hi there
$myvar
$myvar
Enter some text
good bye
$myvar now equals good bye

Linux程序设计(二)shell程序设计的更多相关文章

  1. Linux程序设计之shell程序设计

    看了<linux程序设计(第4版)>(作者:Neil Matthew ,Richard Stones ,陈建 ,宋健建译).做个笔记,以备后面查看. 首先,清楚几个概念. shell编程属 ...

  2. Linux操作系统之Shell程序设计

    Shell是种命令解释程序,也可以看作是一种命令语言的解释器. 用户在与Shell交互时所输入的命令行必须符合Shell命令的语法和语义规范,才能够被Shell理解并执行.Shell所使用的这种命令语 ...

  3. Linux 的使用基础---Shell程序设计

    Shell是Linux系统中的一个重要的层次,它是用户与系统交互作用的界面.Shell除了作为命令解释程序以外,还是一种高级程序设计语言.利用Shell程序设计语言可以编写出功能很强.但代码简单的程序 ...

  4. Linux shell 程序设计

    shell 程序设计 主要的学习内容包含基本思路,语法:变量.条件判断和程序控制,命令列表,函数,命令及执行,调试,grep命令和正则表达式,find命令 什么是shell 适用编写执行相对简单任务的 ...

  5. 2018-2019-20175205实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2018-2019-20175205实验二面向对象程序设计<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>< ...

  6. 2018-2019-2 20175306实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2018-2019-2 20175306实验二面向对象程序设计<Java开发环境的熟悉>实验报告 面向对象程序设计-1 实验要求: 参考:> http://www.cnblogs.c ...

  7. 20175212童皓桢 Java实验二-面向对象程序设计实验报告

    20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...

  8. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验二 面向对象程序设计 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验二 面向对象程序设计 实验报告 (一)单元测试 在 IDEA中我们把产品代码放在src目录中,把测试代码放在tes ...

  9. #2019-2020-4 实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2019-2020-4 实验二面向对象程序设计<Java开发环境的熟悉>实验报告 一.面向对象程序设计-1 ①实验要求: 1.参考 http://www.cnblogs.com/roced ...

  10. 20165317JAVA实验二-面向对象程序设计

    JAVA实验二-面向对象程序设计 提交点一 参考Intellj IDEA 简易教程-单元测试完成单元测试的学习 在IDEA中建立名为MyUtil5317的project,并在其src文件夹中创建名为M ...

随机推荐

  1. 【原创】Linux 增加系统调用

    Linux 增加系统调用大致步骤: 1.下载好内核文件,在内核源文件中添加好自己的调用函数. 2.编译内核 3.验证. 一.在内核源文件中增加自己的函数   首先将内核文件移至/usr/src/下并解 ...

  2. js 遍历json对象

    //方法一: var data=[{name:"a",age:12},{name:"b",age:11},{name:"c",age:13} ...

  3. KVO - 键值观察

    [基本概念] 键值观察是一种使对象获取其他对象的特定属性变化的通知机制.控制器层的绑定技术就是严重依赖键值观察获得模型层和控制器层的变化通知的.对于不依赖控制器层类的应用程序,键值观察提供了一种简化的 ...

  4. 通用php与mysql数据库配置文件

    <?php header("content-type:text/html;charset = utf-8"); $dblink = mysql_connect("l ...

  5. C语言里的指针探析——type *name[] 在函数参数里面,是一个二维指针

    type *name[] 在函数参数里面声明和不在函数里面声明其实不一样. type *name[] 如果在函数参数里声明,则name 是一个二维指针,并不是一个指针数组,而如果不在函数参数里声明,则 ...

  6. bzoj 2806: [Ctsc2012]Cheat 后缀自动机DP

    2806: [Ctsc2012]Cheat Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 583  Solved: 330[Submit][Statu ...

  7. 在 Visual Studio 2010 中创建 ASP.Net Web Service

    第一步:创建一个“ASP.Net Empty Web Application”项目 第二步:在项目中添加“Web Service”新项目 第一步之后,Visual Studio 2010会创建一个仅含 ...

  8. Android软件开发之发送短信与系统短信库解析

    今天我和同学们讨论一下Android平台下如何调用系统方法发送短信.接收短信.系统的短信库相关的问题.进入正题,我们先使用Eclipse工具模拟给自己的模拟器发送一条短信.在Eclipse下打开DDM ...

  9. 以面到点的学习MFC

    市面上讲解学习MFC的书籍不胜其多,但是阅读的同学呢,看了一些内容以后,就无法阅读下去了,觉得MFC好难,有的呢,就会直接去看别人写的程序,不管是大或小,有时候也能明白一点点,但是总是走不出自己开发设 ...

  10. python-os.walk目录递归

    递归删除文件或目录: 递归,os.walk 删除目录,shutil.rmtree # -*- coding: UTF-8 -*- import os.path,sys,shutil path = 'H ...