1. 参考:http://www.cnblogs.com/Lynn-Zhang/p/5758287.html

      1.sh/bash/csh/Tcsh/ksh/pdksh等shell的区别

      • sh(全称 Bourne Shell): 是UNIX最初使用的 shell,而且在每种 UNIX 上都可以使用。
        Bourne Shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面做得不如其他几种 shell。
      • bash(全称 Bourne Again Shell): LinuxOS 默认的,它是 Bourne Shell 的扩展。
        与 Bourne Shell 完全兼容,并且在 Bourne Shell
        的基础上增加了很多特性。可以提供命令补全,命令编辑和命令历史等功能。它还包含了很多 C Shell 和 Korn Shell
        中的优点,有灵活和强大的编辑接口,同时又很友好的用户界面。
      • csh(全称 C Shell): 是一种比 Bourne Shell更适合的变种 Shell,它的语法与 C 语言很相似。
      • Tcsh: 是 Linux 提供的 C Shell 的一个扩展版本。
        Tcsh 包括命令行编辑,可编程单词补全,拼写校正,历史命令替换,作业控制和类似 C 语言的语法,他不仅和 Bash Shell 提示符兼容,而且还提供比 Bash Shell 更多的提示符参数。
      • ksh (全称 Korn Shell): 集合了 C Shell 和 Bourne Shell 的优点并且和 Bourne Shell 完全兼容。
      • pdksh: 是 Linux 系统提供的 ksh 的扩展。
        pdksh 支持人物控制,可以在命令行上挂起,后台执行,唤醒或终止程序。
       
    2. 如果不好理解的话,Shell 个人感觉可以对应成 win 中的 bat,通过代码来实现一些自动定时任务,自动备份或者执行的任务。

      1、chmod +x file 加上执行权限,否则会提示无执行权限。

      2、注意执行脚本时候或者全目录,或者 ./file.sh ,如果不加的话,linux 默认会从PATH 里去找该 file.sh。

      3、看了这篇教程,发现脚本后缀名可以任意修改,仍然可以正常运行。

      4、语法类PHP,方便学习。

    3. 首先,什么是脚本语言?

      脚本语言是像剧本一样教计算机办某个事情的语言。

      比如你想让计算机执行复制某个文件的操作,如:cp ~/Desktop/*.txt ~/text

      你可以在文本编辑器写入上边的代码并且保存此文件,然后你通过执行这个文本文件来执行上面的代码,并不需要重复手动输入上边的代码。

      下面这句话是我在网上看到的:

      所以脚本其实就是短小的、用来让计算机自动化完成一系列工作的程序,这类程序可以用文本编辑器修改,不需要编译,通常是解释运行的。

1.Shell 变量

定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

ww=wwwwwwwwwwww
echo $ww
echo ${ww}

使用一个定义过的变量,只要在变量名前面加美元符号即可,变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界.

只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

下面的例子尝试更改只读变量,结果报错:

#!/bin/bash
myUrl="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.runoob.com"

删除变量

使用 unset 命令可以删除变量。语法:变量被删除后不能再次使用。unset 命令不能删除只读变量。

aaarticlea/png;base64,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" alt="" />

Shell 字符串

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似

Linux 的字符串截取很有用。有八种方法。

假设有变量 var=http://www.aaa.com/123.htm

1. # 号截取,删除左边字符,保留右边字符。

echo ${var#*//}

其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符

即删除 http://

结果是 :www.aaa.com/123.htm

2. ## 号截取,删除左边字符,保留右边字符。

echo ${var##*/}

##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符

即删除 http://www.aaa.com/

结果是 123.htm

3. %号截取,删除右边字符,保留左边字符

echo ${var%/*}

%/* 表示从右边开始,删除第一个 / 号及右边的字符

结果是:http://www.aaa.com

4. %% 号截取,删除右边字符,保留左边字符

echo ${var%%/*}

%%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符

结果是:http:

5. 从左边第几个字符开始,及字符的个数

echo ${var:0:5}

其中的 0 表示左边第一个字符开始,5 表示字符的总个数。

结果是:http:

6. 从左边第几个字符开始,一直到结束。

echo ${var:7}

其中的 7 表示左边第8个字符开始,一直到结束。

结果是 :www.aaa.com/123.htm

7. 从右边第几个字符开始,及字符的个数

echo ${var:0-7:3}

其中的 0-7 表示右边算起第七个字符开始,3 表示字符的个数。

结果是:123

8. 从右边第几个字符开始,一直到结束。

echo ${var:0-7}

表示从右边第七个字符开始,一直到结束。

结果是:123.htm

注:(左边的第一个字符是用 0 表示,右边的第一个字符用 0-1 表示)

Shell 注释

以"#"开头的行就是注释,会被解释器忽略。

sh里没有多行注释,只能每一行加一个#号

Shell 基本运算符

Shell 和其他编程语言一样,支持多种运算符,包括:

  • 算数运算符
  • 关系运算符
  • 布尔运算符
  • 字符串运算符
  • 文件测试运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

例如,两个数相加(注意使用的是反引号 ` 而不是单引号 ')

#!/bin/bash

val=`expr 2 + 2`
echo "两数之和为 : $val"

【shell入门】Shell用法的更多相关文章

  1. shell入门-shell特性

    1.关于! 命令:!! 说明: 执行上一条命令 [root@wangshaojun ~]# pwd/root[root@wangshaojun ~]# !!pwd/root 命令:!n (n表示数字) ...

  2. 10_Linux基础-SHELL入门1

    @ 目录 10_Linux基础-SHELL入门1 一. 输入输出重定向 二. 2个特殊文件 三. here document 四. tee命令 五. 清空文件内容 六. SHELL入门 SHELL的变 ...

  3. linux shell 入门

    本文是本人学习linux shell入门收集整理,不完全原创. 参考博文: http://www.cnblogs.com/suyang/archive/2008/05/18/1201990.html ...

  4. 【shell】shell编程(一)-入门

    如今,不会Linux的程序员都不意思说自己是程序员,而不会shell编程就不能说自己会Linux.说起来似乎shell编程很屌啊,然而不用担心,其实shell编程真的很简单.背景 什么是shell编程 ...

  5. Shell expr的用法 bc 命令 let命令

    Shell expr的用法  bc 命令   let命令 数学运算 let命令  expr命令  bc命令  $(())   $[] http://www.80ops.cn/archives/245. ...

  6. hbase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

  7. 【转载】HBase基本概念和hbase shell常用命令用法

    1. 简介 HBase是一个分布式的.面向列的开源数据库,源于google的一篇论文<bigtable:一个结构化数据的分布式存储系统>.HBase是Google Bigtable的开源实 ...

  8. Linux shell入门基础(六)

    六.Shell脚本编程详解 将上述五部分的内容,串联起来,增加对Shell的了解 01.shell脚本 shell: # #perl #python #php #jsp 不同的脚本执行不同的文本,执行 ...

  9. Linux shell入门基础(一)

    Linux shell入门基础(一): 01.增加删除用户: #useradd byf   userdel byf(主目录未删除)  userdel -r byf   该用户的属性:usermod 用 ...

随机推荐

  1. 用express框架实现反向代理

    目前很多公司开发都是前后台分离开发,于是我用node起了一个服务,用node中的express框架实现了反向代理.(通俗易懂的讲就是我在我的电脑访问不到后台同事的电脑接口,这样做以后就可以在我本地访问 ...

  2. php中 为什么验证码 必须要开启 ob_clean 才可以显示

    用ob_clean(),将前面的输出都清除就OK了 这表示你的程序前面有输出,<?php 前有空格.空行.文件有BOM头 ob_clean(); header("content-typ ...

  3. Head First Python (一)

    建立一个数组: cast = ["Cleese","Palin","Jones","Idle"] 列出数组有多少数据项: ...

  4. Kali 远程登陆SSH

    一.配置SSH 编辑/etc/ssh/sshd_config 将#PasswordAuthentication no的注释去掉,将NO修改为YES //可以用密码登陆 将PermitRootLogin ...

  5. 16,Python网络爬虫之Scrapy框架(CrawlSpider)

    今日概要 CrawlSpider简介 CrawlSpider使用 基于CrawlSpider爬虫文件的创建 链接提取器 规则解析器 引入 提问:如果想要通过爬虫程序去爬取”糗百“全站数据新闻数据的话, ...

  6. loj2537 「PKUWC 2018」Minimax

    pkusc 快到了--做点题涨涨 rp. 初见时 yy 了一个类似于归并的东西,\(O(n^2)\),50 分. 50 分 yy 做法 对于一个点,枚举他能到达的权值(假设这个权值在左子树,在右子树是 ...

  7. IOS开发学习笔记017-第一个IOS应用

    第一个IOS应用程序,就从最简单的开始吧. 1.先了解一下开发环境,Xcode的相关组成 2.还有模拟器 3.运行与停止按钮 4.新建一个工程 5.看看main函数里都有啥 6.现在来添加一个控件 1 ...

  8. thinkphp3.2接入支付宝支付接口(PC端)

    下载支付宝接口包    点击这里        提取密码:aryp 整个接口核心类文件 alipay.config.php是相关参数的配置文件 alipayapi.php 是支付宝接口入口文件 not ...

  9. CSU-2220 Godsend

    题目链接 http://acm.csu.edu.cn:20080/csuoj/problemset/problem?pid=2220 题目 Description Leha somehow found ...

  10. [python][django学习篇][9]设计正在博客视图(3)

    需求: 真正的首页视图函数,当用户访问我们的博客首页时,他将看到我们发表的博客文章列表,就像 演示项目 里展示的这样.t https://docs.djangoproject.com/en/1.10/ ...