阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

什么是shell脚本编程?

85次阅读
没有评论

共计 1830 个字符,预计需要花费 5 分钟才能阅读完成。

什么是 Shell 脚本

示例:

#!/bin/sh

cd~

mkdirshell_tut

cdshell_tut

for((i=0;i<10;i++));do

touchtest_$i.txt

done

示例解释

第 1 行:指定脚本解释器,这里是用 /bin/sh 做解释器的

第 2 行:切换到当前用户的 home 目录

第 3 行:创建一个目录 shell_tut

第 4 行:切换到 shell_tut 目录

第 5 行:循环条件,一共循环 10 次

第 6 行:创建一个 test_1…10.txt 文件

第 7 行:循环体结束

cd,mkdir,touch 都是系统自带的程序,一般在 /bin 或者 /usr/bin 目录下。for,do,done 是 sh 脚本语言的关键字。

shell 和 shell 脚本的概念

shell 是指一种应用程序,这个应用程序供给了一个界面,用户经过这个界面拜访操作系统内核的效劳。KenThompson 的 sh 是第一种 UnixShell,WindowsExplorer 是一个典型的图形界面 Shell。

shell 脚本(shell

script),是一种为 shell 编写的脚本程序。业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell

script 是两个不同的概念。由于习惯的原因,简洁起见,本文出现的“shell 编程”都是指 shell 脚本编程,不是指开发 shell 自身(如

WindowsExplorer 扩展开发)。

环境

shell 编程跟 java、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

OS

当前主流的操作系统都支持 shell 编程,本文档所述的 shell 编程是指 Linux 下的 shell,讲的基本都是 POSIX 标准下的功能,所以,也适用于 Unix 及 BSD(如 MacOS)。

定义变量

定义变量时,变量名不加美元符号($),如:

your_name=”qinjx”

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。

除了显式地直接赋值,还可以用语句给变量赋值,如:

forfilein`ls/etc`

使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

your_name=”qinjx”

echo$your_name

echo${your_name}

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

forskillinAdaCoffeActionJavado

echo”Iamgoodat${skill}Script”

done

如果不给 skill 变量加花括号,写成 echo”Iamgoodat$skillScript”,解释器就会把 $skillScript 当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

推荐给所有变量加上花括号,这是个好的编程习惯。IntelliJIDEA 编写 shellscript 时,IDE 就会提示加花括号。

重定义变量

已定义的变量,可以被重新定义,如:

your_name=”qinjx”

echo$your_name

your_name=”alibaba”

echo$your_name

这样写是合法的,但注意,第二次赋值的时候不能写 $your_name=”alibaba”,使用变量的时候才加美元符。

单引号

str=’thisisastring’

单引号字符串的限制:

单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的

单引号字串中不能出现单引号(对单引号使用转义符后也不行)

双引号

your_name=’qinjx’

str=”Hello,Iknowyourare\”$your_name\”!\n”

双引号里可以有变量

双引号里可以出现转义字符

字符串操作

拼接字符串

your_name=”qinjx”

greeting=”hello,”$your_name”!”

greeting_1=”hello,${your_name}!”

echo$greeting$greeting_1

获取字符串长度:

string=”abcd”

echo${#string}# 输出:4

提取子字符串

string=”alibabaisagreatcompany”

echo${string:1:4}# 输出:liba

查找子字符串

string=”alibabaisagreatcompany”

echo`exprindex”$string”is`# 输出:8,这个句子的意思是:找出单词 is 在这名话中的方位.

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-12-03发表,共计1830字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中