linux脚本程序是什么意思,什么是shell脚本编程?
什么是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在这名话中的方位.
linux脚本程序是什么意思,什么是shell脚本编程?相关推荐
- linux脚本怎么发送到桌面,如何在Linux上使用Zenity创建简单的图形Shell脚本
Zenity使用单个命令为shell脚本添加了图形界面. Shell脚本是自动化重复任务的好方法,但是它们通常只限于终端 - Zenity将它们从终端中导出到桌面上. 我们已经介绍了过去的shell脚 ...
- 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程
Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/ 转载于:https://www.cnblogs.com/pegasu ...
- linux脚本好难,如何做才能学好Shell脚本的经验总结
大多同学反馈Shell脚本不容易学,感觉学完了Shell脚本这部分课程,还是不能写出脚本来. 我来帮大家分析一下原因,并解说如何做才能学好Shell脚本. 之所以你觉得难学,写不出东西来.是因为,太生 ...
- Linux命令每五分钟执行一次,Linux crontab 每5秒钟执行一次 shell 脚本 的方法
Linux crontab 每5秒钟执行一次 shell 脚本 的方法 由于 Linux 的 crontab 的定时命令格式如下: minute hour day-of-month month-of- ...
- Linux 平台下 RMAN 全备 和 增量备份 shell 脚本
一. 一些准备知识 Oracle 分归档和非归档模式. 这两者的区别就是对redo log的处理.归档模式下,当一个redo log 写满之后,就会把这个redo log里的内容写入归档文件,等写完之 ...
- Linux复制文件到usb设备中,使用shell脚本实现USB设备的加载与文件复制
使用shell脚本实现USB设备的加载与文件复制 在Linux操作系统中,如果插入一个USB设备,需要用mount挂载命令才能实现这个设备的加载,下面写一个USB设备挂载与文件复制的Shell程序,程 ...
- 【Linux命令】《鸟哥Linux基础》第十二章 学习shell脚本
第十二章 学习shell脚本 通常利用shell脚本完成服务器的检测工作,不涉及大量运算. 12.1 简单shell脚本介绍 12.2 简单shell脚本练习 12.2.1 简单范例 范例1:永远的开 ...
- Linux开发 安装JDK8、mysql8.0、shell脚本编写、Ubuntu安装 p4
前面的笔记: Linux 学习笔记1 安装linux详细教程_linux系统 setting_O丶ne丨柒夜的博客-CSDN博客 Linux 学习笔记2 常用命令_O丶ne丨柒夜的博客-CSDN博客 ...
- java程序ssh置顶_使用shell脚本启动远程(SSH)Java应用程序不会返回本地提示
我见过类似的问题,所有已解决的问题已经解决/不适用. 我在启动Java应用程序的远程计算机中有一个bash脚本.相关的行将是: #!/usr/bin/env bash ... java -cp /fu ...
最新文章
- 论文笔记之: Deep Metric Learning via Lifted Structured Feature Embedding
- 学习之模块架构 DotNetNuke 6
- querywrapper 时间区间查询_雅思官方:关于增设用于英国签证及移民的雅思考试考点的通知!附20192020雅思考试时间安排...
- 《C语言编程初学者指南》一导读
- CentOS 7 配置网络连接
- java ee 设计模式_Java EE 设计模式解析与应用_源雷技术空间
- 计算机1级b知识点,初中信息技术等级考试知识点
- keras画神经网络拓扑结构图
- HMC5883L指南针罗盘模块连接arduino使用的注意事项
- 你的性格是什么颜色的?乐嘉《性格色彩学》测试题
- 基于OpenCV3.0的车牌识别系统设计(二)--车牌提取
- java.io.IOException: Type mismatch in key from map: expected org.apache.hadoop.io.Text, recieved org
- 高效解答二进制数“多异或”和“多同或”连续运算问题
- java笔记5 抽象类和接口
- CSS把图片设置为背景
- python有道字典_Linux下自制有道词典 - python 解密有道词典JS加密
- 到底什么是工业互联网?
- CART算法(机器学习)
- Linux服务器搭建----Web服务器(apache)
- 带一张阿拉旅游卡,随时出发
热门文章
- CDC::GetDeviceCaps()物理长度与屏幕像素间的转换
- jq中使用promise封装ajax
- 「批处理」以服务方式启动批处理
- PIE SDK矢量数据空间索引的创建
- 微信小程序之旅一(页面渲染)
- vue中简单的小插曲
- git merge 和 git rebase 小结
- Xcode6 创建静态库
- .Net MVC 自定义Action类型,XmlAction,ImageAction等
- react 中使用import()实现按需加载报错 解决方法 --‘import’ and ‘export’ may only appear at the top level