既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了。接下来就是show time...

   shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁。所以呢,他既是一种命令语言,同时呢还是一种程序设计语言。shell脚本(shell script),是一种为shell编写的脚本程序。业界所说的shell通常都是指shell脚本,但是各位看官要知道的是,shell和shell script是两个不同的概念。由于习惯的原因,简介起见,本文出现的“shell编程”都是指shell脚本编程,而不是指开发shell自身,各位看官千万要注意哈。

    其次呢,shell编程跟java、php编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。但是linux的shell种类很多,本人所学习的是其中的免费版本bash shell。接下来就是正题了。

    shell脚本开头呢,必须要注明自己用的是那个解释器。保存的文件后缀名为***.sh就好了。我用的是bash,所以开头需要注上#!/bin/bash

   
然后就是输出了,跟php类似,echo就可以输出东西:echo "hello word!",就可以输出内容了。我是在windows上使用git

GUI来运行的,具体运行方式为./test.sh,然后回车就运行了这个test.sh文件。最主要的是shell里没有类似php的;似得分界符,只要换行就是另外的输出了。

再来就是shell中的变量问题了,跟php的变量命名规则差不多,唯一不同的就是不需要使用$开头来命名变量,但是输出或者使用变量的时候必须使用$。具体方式为your_name="luyaran"(变量命名),echo
$your_name。还有就是咱们phper的习惯是命名时习惯性的会加上空格:$your_name =
"luyaran";,但是在这里我想说错了,等号两边不能加上空格,加上就算是常规性的defined。我刚刚开始用shell的时候就经常踩进这个坑啦。另,变量还有一种输出方式:echo
"${your_name} is my
girlfriend",其主要目的是为了帮助解释器识别变量边界。比较个性的是我们还可以使用readonly这个命令来使我们的变量只具有读的属性而不能修改,看起来比较高达上的样子。然后嘞,我们就可以用unset加变量名的方式来删除我们所定义的变量。接下来按照php的套路,我们最后要确定的就是变量的类型,按照官方解释如下:

运行shell时,会同时存在三种变量:

  • 1) 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  • 2) 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  • 3) shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

    好的,然后就到了字符串这块了。其实不外乎获取字符串的长度,截取字符串,拼接字符串等有限的几个方面。在开始之前呢,还有一点需要提前说明的就是单双引号之间的区别和用途:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
  • 双引号里可以有变量
  • 双引号里可以出现转义字符

    字符串拼接与我们php的样式略微的有差异,那就是没有连接符:

your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1

    获取字符串长度:

string="abcd"
echo ${#string} #输出 4

    提取子字符串(以下示例是从字符串第二个开始,截取四个字符):

string="runoob is a great site"
echo ${string:1:4} # 输出 unoo

    字符串查找(以下示例的“`”是Esc键下面的那个):

string="runoob is a great company"
echo `expr index "$string" is` # 输出 8

    勉强写得差不多了,各位看官见笑了啊,本人纯属小白,这篇博客只是用来做笔记而已,勿喷哈。。。

    关于之后的,本人会在学习过程中,陆续接上的。。。

   原文链接:https://blog.csdn.net/luyaran/article/details/79353093

shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)的更多相关文章

  1. shell重温---基础篇(参数传递&echo命令)

    经过前两天的学习,关于shell的基础算是知道的一般般啦,最起码不算是小白了(纯属意淫).今天就来点干货哈.   首先是运行shell脚本时的参数传递.脚本内获取参数的格式为$n.n代表了一个数字,例 ...

  2. shell重温---基础篇(流程控制&if判断&for&while&循环操作)

        和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { search( ...

  3. shell重温---基础篇(shell数组&数组操作)

    上篇博客已经分析重温了shell的运行方式以及其中的变量还有字符串,之后按照套路就是数组方面了,废话不多说,直接进入正题哈.(小白笔记,各位看官勿喷...)     bash shell呢,支持一位数 ...

  4. shell重温---基础篇(printf命令&test命令)

    在shell中还有一个输出的命令,那就是printf了.它模仿的是C程序库(library)里的printf()程序,是由POSIX标准所定义,所以嘞,使用printf脚本比echo移植性要好一点,它 ...

  5. shell重温---基础篇(连接数据库)

    前几天分享了shell字符串操作,数组操作等,接下来回归到项目,进行数据库操作.按照一般情况来说,shell连接数据库基本上都是DB使用的,因为需要运行大量的sql啊什么的,所以都会封装到shell中 ...

  6. shell重温---基础篇(函数操作)

        linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.shell中函数的定义格式如下: [ function ] funname [()] { action; [ret ...

  7. shell重温---基础篇(文件包含)

        和其他语言一样,Shell 也可以包含外部脚本.这样可以很方便的封装一些公用的代码作为一个独立的文件.Shell 文件包含的语法格式如下: . filename # 注意点号(.)和文件名中间 ...

  8. shell重温---基础篇(输入/输出重定向)

        大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令通常将其输出写入到标准 ...

  9. 【转】Shell编程基础篇-下

    [转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...

随机推荐

  1. 5.Zabbix 3.0案例

    请查看我的有道云笔记: http://note.youdao.com/noteshare?id=15d986179cb65b45c5824e90995109ee&sub=D2E73572D97 ...

  2. June 09th 2017 Week 23rd Friday

    The supreme happiness of life is the conviction that we are loved. 生活中最大的幸福就是,坚信有人爱着我们. One of my go ...

  3. 小组Scrum第一次冲刺

    团队任务描述: 在确定完分组,并对于敏捷开发做了相应的了解之后,我们团队开始了第一次的冲刺.对于我们团队的第一次的 Scrum冲刺,我们团队开展了团队会议.首先,我们明确了我们的目标,对其进行了相对初 ...

  4. 如何在ubuntu上安装virtualbox的driver module vboxdrv

    干净的ubuntu安装完毕之后是没有vboxdrv这个driver module的. 新建一个folder jerry_virtualbox: 使用wget下载virtualbox安装包:https: ...

  5. Android(java)学习笔记16:多线程 - 定时器概述和使用

    1. 定时器: 定时器是一个应用十分广泛的线程工具,可用于调度多个定时任务以后台线程的方式执行. 在Java中,可以通过Timer和TimerTask类来实现定义调度的功能 Timer public ...

  6. Uva 10534 波浪子序列

    题目链接:https://vjudge.net/contest/160916#problem/C 题意: 求一个奇数长的子序列,前一半严格递增,后一半严格递减:O(nlogn) 分析: 再次复习一下L ...

  7. 模拟,找次品硬币,Counterfeit Dollar(POJ 1013)

    题目链接:http://poj.org/problem?id=1013 解题报告: 1.由于次品的重量不清楚,用time['L'+1]来记录各个字母被怀疑的次数.为负数则轻,为正数则重. 2.用zer ...

  8. 关于java中Exception异常

    一.理解异常及异常处理的概念 异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序. 异常不是错误 程序中关键的位置有异常处理,提高程序的稳定性 二.掌握Java异常处理机制 Jav ...

  9. ssd的BUG

    苦恼了我一周,当然最近我有事老请假,也有原因.就是查不到我训练的SSD模型问题出在哪里,loss也在下降,但是跳动比较大.测试时,有些类效果还可以,但是有些类压根检测不出来.而根据我的经验,那些类大概 ...

  10. LeetCode12.整数转罗马数字 JavaScript

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并 ...