shell基础篇(一)从hello world开始

前记:这里是我做的shell笔记;接下来会提供一系列。

Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本。Unix/Linux上常见的Shell脚本解释器有bash、sh、csh、ksh等,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器。

至于这几种脚本解释器的介绍与区别;说白我也不清楚;自己查资料去吧;其实知不知道并不是很重要。这并不影响你会不会shell。

1. 新建一个文件例如lottu01.sh,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好。还是从"hello world"开始吧。

#!/bin/bash
echo "hello world !"

注解:“#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。我就用bash吧
echo:是shell中的输出命令;把其后面的字符串输出到屏幕上。--这也是大家都知道的。

2. 运行脚本

$chmod +x lottu01.sh  #给脚本执行权限
$ ./lottu01.sh
hello world !

注意,一定要写成./test.sh,而不是test.sh。

直接写test.sh,linux系统会去PATH里寻找有没有叫test.sh的,而只有$HOME/bin, $HOME/sbin, /usr/bin,/usr/sbin等在PATH里,你的当前目录通常不在PATH里,所以写成test.sh是会找不到命令的,要用. /test.sh告诉系统说,就在当前目录找。
当然也可以写test.sh。做如下操作
cp lottu01.sh ../bin/     # ../bin是当前用户home目录的bin下面。这个大家别误解了。
再去测试下 lottu01.sh是否OK。

$cp lottu01.sh ../bin/
$ lottu01.sh
hello world !

3. 说说read命令

刚刚说的echo是shell中的输出;那么输入呢;就说说read吧。--这个在以后章节会详细讲解--read

#!/bin/bash
# Author : lottu
# Copyright (c) li0924
# start script
echo "please input your name ?"
read name
echo "HI, ${name}"

测试:
$ chmod +x lottu02.sh
$ ./lottu02.sh
please input your name ?
lottu                     --这里你输入的name。
HI, lottu

【note】

1. 脚本第一行-#!/bin/bash;为脚本的解释器;当然也可以不写;当时你就必须这样执行
   /bin/bash script;
2. echo,read命令;这个到后面补充下。

时间: 2024-10-11 22:39:27

shell基础篇(一)从hello world开始的相关文章

linux学习之shell基础篇

1.shell简介 shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从shell或其他程序向Linux传递命令时,内核会做出相应的反应. 2.shell的工作原理 系统初启后,核心为每个终端用户建立一个进程去执行Shell解释程序.它的执行过程基本上按如下步骤: (1)读取用户由键盘输入的命令行. (2)分析命令,以命令名作为文件名,并将其它参数改造为系统调用execve( )内部处理所要求的形        式. (3)

shell基础篇(四)算术运算

---内容来源于http://www.jb51.net/article/31232.htm shell中的赋值和操作默认都是字符串处理,1.错误方法举例 a) var=1+1 echo $var 输出的结果是1+1,悲剧,呵呵 b) var=1 var=$var+1 echo $var 输出结果是1+1,依然悲剧,呵呵 2.正确方法 1)使用let var=1 let "var+=1" echo $var 输出结果为2,这次没有悲剧 注意: a)经我测试let几乎支持所有的运算符,b)

shell基础篇(三)--引号

---今天篇幅比较少:只介绍引号. shell中的引号有三种:双引号",单引号',反引号`1. 双引号:由双引号括起来的字符,除$.倒引号(`)和反斜线(\)仍保留其特殊功能外,其余字符均作为普通字符对待2. 单引号:由单引号括起来的字符都作为普通字符出现3. 反引号:命令替换的一种. 一.为什么要用引号 前面我们讲了变量:在定义变量时.变量都是字符串: var01=100 var02='100' var03="100" 输出的结果都是一样的,字符串100. 若字符串是我们熟

shell基础篇(九)函数

函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用1. Shell 函数的定义格式如下: [function] fun_name () { command1 [retrun n] } 函数返回值,可以显式增加return语句:如果不加,会将最后一条命令运行结果作为返回值. Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败.如果 return 其他

shell脚本编程之基础篇(二)

shell脚本编程之基础篇(二) ============================================================================== 概述: ============================================================================== 退出状态 ★进程使用退出状态来报告成功或失败 ◆0 代表成功,1-255代表失败 ◆$? 变量保存最近的命令退出状态 (查看:echo $?)

shell基础二十篇

shell基础二十篇 编者按:由 wingger  整理的 shell基础十二篇 以及L_kernel补充的第十三--二十篇,涉及shell 编程及使用的各个方面,又附有大量的例子,极适合初学者系统学习.如果配合網中人的shell 十三問? ,效果更加明显. 这里是其中的第十章 sed.  其他各章可察看相应的 link. shell基础1:文件安全与权限 http://bbs.chinaunix.net/thread-434579-1-1.html 附:Linux的用户和用户组管理 http:

shell基础二十篇 一些笔记

shell基础二十篇 转自 http://bbs.chinaunix.net/thread-452942-1-1.html 研讨:Bash 内建命令 read read -p "how old r u? " ageecho $ageread -p "some words? " -a wordsecho ${words[*]}read -p "Password: " -s passwd echo $passwd read -t 5 authecho

awk(一)基础篇

上一篇总结了下sed的用法,这一篇玩玩sed的好基友awk,学完它俩,以后就再也不用怕处理文本文件了. awk其实和sed处理过程差不多,都是面向字符流的.sed和awk都相当于是一个加工厂,输入的文本行,相当于原材料,原材料在工厂中经过一系列处理.然后输出成品. awk和sed不同的是,awk更加的强大了,基本上可以说大多数sed能够实现的功能,awk都可以实现.... 但是实现相同的功能,大多情况下sed的过程更加的简洁吧. 当然awk还有着更多的功能,awk本身就是一门类C的语言了,有变量

ansible(二)基础篇

这篇总结一下Inventory,变量,目标匹配,及/usr/bin/ansible 命令行常用的模块 上一篇也说过Inventory的默认路径是在/etc/ansible/hosts,当然这个东西可以说是静态的,为啥是静态呢,你要手工的把你的要管理的主机写进去. 当然还有一种动态的Inventory,这个其实也简单,就是如果你已经有了一个资源管理系统,里面有你们的所有主机信息.然后咱们写个脚本程序,把你们资源管理系统里面的这些信息给拉过来,以json格式呈现就OK了. 其实ansible还有一种