shell 脚本入门
shell script 是一个程序化脚本,使用shell语法跟linux命令完成的一个程序。
注意事项:
文件开头: #!/bin/bash
文本以enter符号作为开始执行该行语句,用跳脱符 \enter使命令接着下一行写
# 号作为批注行
执行脚本:
首先赋予执行权限:chmod +x filename.sh
绝对路径执行:/home/../filename.sh
相对路径执行:./filename.sh
将filename.sh放在path目录下,直接执行filename.sh
借用bash执行:bash filename.sh 或者 sh filename.sh
常用操作:
输出:echo [-ne] 字符串 【说明 -n字符串不自动换行, -e 对一些字符做特殊处理
如: \a 发出警告声
\b 删除前一个字符
\c 最后不加上换行符号
\f 换行但光标仍旧停留在原来的位置
\n 换行且光标移至行首
\r 光标移至行首,但不换行
\t 插入tab
\v 与\f相同
\\ 插入\字符
退出程序: exit n 【说明 n位数字,常见的为0,可以使用$? 获取这个n值。
获取屏幕输入信息: read -p 字符串 变量名 【说明 将字符串赋给变量。
显示日期:$(date +%Y%m%d) 将当前日期格式化为年月日
条件判断:test
test -e /filename && echo "exist" || echo "Not exist"
文件或目录类型判断:
-e 文件或目录存在
-f 存在且为文件
-d 存在且为目录
文件或目录权限判断:
-r 文件或目录可读
-w 文件或目录可写
-x 文件或目录可执行
-s 文件或目录存在且为非空
文件间比较:
-nt (newer than) 【test file1 -nt file2】
-ot(older than)
-ef 相同
两整数间比较:
-eq 相等 【test n1 -eq n2】
-ne 不相等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
字符串判断:
test -z string 字符串为空
test -n string 字符串非空 【-n可省】
test str1 == str2
test str1 != str2
多条件判断:
test -r file -a -x file 文件file 同时 拥有 r 和 x 权限 【-a -o !】
条件判断 [ ]
eg:[ “test“ == “test“ ],【注意空格键,加单双引号】
shell 自带变量
sh filename.sh op1 op2 op3 ,在filename文本中以$0 表示filename,$1 表示op1,$2 表示op2,$3 表示op3,$# 表示参数个数,$@ 表示“$1”“$2”“$3”,$* 表示“$1 $2 $3”
shift 使命令参数变量号偏移
假如sh filename op1 op2 op3 op4 在sh文本中
echo $1 # 显示op1
shift #偏移一位
echo $1 #显示op2
shift 2 #偏移2位
echo $1 #显示op4
条件判断语句
if [ 条件表达式 ] ; then
执行语句;
elif [ 条件表达式 ]; then
执行语句
fi
case 语句
case $变量名 in
"第一种变量")
操作;;
"第二种变量")
操作;;
*) #不是第一种和第二种的
操作;;
esac
循环
1.while [ 条件表达式 ] 2.util [ 条件表达式 ] 3.for var in con1 con2 con3 【可能的有限的值】
do # 循环开始 do do
程序段 程序段 程序段
done # 循环结束 done done
4.for((i=1;i<10;i++))
do
程序段
done
说明:在for循环中,可以用$(seq 1 100),或者{1..100} 表示连续的数或者字母,${RANDOM} linux随机数变量。范围[0,32767]
shell script 的调试:
sh -nvx filename.sh -n 不执行文件,仅查询语法问题,-v 执行前,先输出文件,-x 将文件内容和输出语句同步输出。
source filename.sh 执行脚本:
执行该脚本是在父bash中执行的,执行完后,可以直接 echo ${filename.sh中的变量},得到变量值;而sh filename.sh 后,echo不能输出文件中的变量名。
shell 脚本入门的更多相关文章
- Linux Shell脚本入门--cut命令
Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...
- linux的shell脚本入门
Linux shell脚本入门教程 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活 的工具.Shell不仅仅是命令的收集,而且是一门非常 ...
- (一)shell脚本入门
shell脚本入门 1.脚本格式 脚本以#!/bin/bash 开头(指定解析器) 2.第一个shell脚本:helloworld (1)需求:创建一个shell脚本,输出helloworld 运行: ...
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
- 【shell】shell脚本入门
1. 前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚 ...
- Linux入门第五天——shell脚本入门(上)基本概念
一.什么是shell脚本 Shell 脚本(shell script),是一种为 shell 编写的脚本程序. 二.shell入门 1.先导知识 变量知识补充:https://www.cnblogs. ...
- shell脚本入门及基本元素
命令和参数 #!/bin/sh 其中#!用来告诉系统它后面的参数是用来执行该文件的程序,必须放在脚本的首行,不然会在执行脚 本 的时候报错.当一个文件开头的两个字符是#!时,内核会扫描其它的部分看是否 ...
- Linux Shell 脚本入门
linux shell 脚本格式 #!/bin/sh#..... (注释)命令...命令... 使用vi 创建完成之后需设置权限 chmod +x filename.sh 执行命令: ./filena ...
- Shell脚本入门与应用
编写第一个shell脚本 如同其他语言一样,通过我们使用任意一种文字编辑器,比如 nedit.kedit.emacs.vi 等来编写我们的 shell 程序.程序必须以下面的行开始(必须方在文件的第一 ...
- shell脚本入门
什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch ...
随机推荐
- 谷歌添加百度翻译提示Google已将百度翻译标记为恶意程序并阻止安装,怎么办
进入谷歌浏览器的设置, 显示高级设置——隐私设置下七个选项中的第四个选项(启用针对网上诱骗和恶意软件的防护功能)把勾去掉,然后将百度翻译的CRX拖动到chrome的安装插件页面, 修改chrome的限 ...
- HDU 5532——Almost Sorted Array——————【技巧】
Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- poj 2378 删点最大分支不超过一半
http://poj.org/problem?id=2378 这题和找重心基本一样,判断条件换一下就行 #include <iostream> #include <string> ...
- #include stdio.h(5)
#include <stdio.h> int main() { //1.数组的排序-冒泡排序 /* 1.规则:相邻的两个数据进行比较 2.如果有N个数据,需要选择N-1次参照物来比较, 因 ...
- angular的多个模块执行 angular里 字符串与对象的互转
1.disable : true ,禁用 2.$timeout 计时器 $interval.cancel(timer); 3.app.run(); 可以不使用控制器就开启数据,但适合$rootsco ...
- Android @1x,@2x,@3x 资源文件自动分包工具
version 1.2 1.修改不用输入扩展名 2.输出路径可选.默认会在输入路径下建文件夹 前沿: 现在开发中ios,android会使用一套图,但是ui设计师给的图命名是以@1x,@2x,@3x这 ...
- Android自定义控件练手——波浪效果
这一次要绘制出波浪效果,也是小白的我第一次还望轻喷.首先当然是展示效果图啦: 一.首先来说说实现思路. 想到波浪效果,当然我第一反应是用正余弦波来设计啦(也能通过贝塞尔曲线,这里我不提及这个方法但是在 ...
- sharepoint知识点总结
{ users.Add(value.User); } else { SPGroup group = web.Groups.GetByID(value.LookupId); groups.Add(gro ...
- 类型信息(RTTI和反射)——反射
运行时类型信息可以让你在程序运行时发现和使用类型信息. 在Java中运行时识别对象和类的信息有两种方式:传统的RTTI,以及反射.下面就来说说反射. 重点说说通过反射获取方法以及调用方法,即类方法提取 ...
- 解压war包
unzip cat-alpha-3.0.0.war -d /tmp/test 说明:-d指定解压的路径和文件,文件名不存在会自动创建