1.第一个shell脚本
创建一个test.sh文件,并书写下面内容
#!/bin/bash
echo "Hello World!"
"#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。
echo命令用于向窗口输出文本。
2.运行shell脚本
1.作为可执行程序
chmod +x ./test.ch 使脚本具有执行权限
./test.ch 执行脚本
2.作为解析器参数
/bin/sh test.ch
/bin/php test.php
这种执行方式不需要写#!/bin/bash,写了也没有
3.变量
首个符号必须是字母
中间不能出现空格,可以使用下划线(_)
本能使用标点符号
不能使用bash里的关键字(可以使用help查看保留的关键字)
you_name = "hello world!"
for file in `ls /etc`
使用变量
echo $you_name
echo ${you_name}
echo "hello $you_name"
获取字符串长度 ${#you_name}
提取子字符串 ${you_name:1:4}
查找子字符串 `expr index "$you_name" is`
Shell数组
array_name = (value0 value1 value2 ...)
array_name[n] = valuen
读取数组
value = ${array_name[n]}
使用@符号可以获取数组中所有元素
echo ${array_name[@]}
获取数组的长度
length = ${#array_name[@]}
length =${#array_name[*]}
获取单个元素的长度length =${#array_name[n]}
注解 #
4.执行脚本传递参数
./test.sh 1 2 3
脚本中使用传递参数 $1 $2 $3 ... $n
$# 传递脚本的个数
$*、$@ 以一个字符串显示所有传递参数
$$ 脚本运行的当前进程ID
$! 后天运行的最后一个进程ID
$- 显示Shell使用的当前选项
$? 显示最后命令的推出状态,0表示没错误,其他值都表示有错误
5.运算符
算数运算符 + - * / % = == !=
val = `expr 2 + 2 `
echo "两数的和 $val "
关系运算符 -eq -nq -gt -lt -ge -le
布尔运算符 !(非) -o(或) -a(与)
逻辑运算符 ;模式2) command1 command2 ... commandN ;;esac
break 跳出循环
continue 终止当前循环,进行下次循环
9.函数
定义
函数名(){code [return int]}
调用函数名()
函数参数
#!/bin/bashfunWithParam(){ echo "第一个参数为 $1 !" echo "第二个参数为 $2 !" echo "第十个参数为 $10 !" echo "第十个参数为 ${10} !" echo "第十一个参数为 ${11} !" echo "参数总数有 $# 个!" echo "作为一个字符串输出所有参数 $* !"}funWithParam 1 2 3 4 5 6 7 8 9 34 7310.输入输出重定向
命令 说明 command > file 将输出重定向到 file。 command > file 将输出以追加的方式重定向到 file。 n > file 将文件描述符为 n 的文件重定向到 file。 n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。 n >& m 将输出文件 m 和 n 合并。 n <& m 将输入文件 m 和 n 合并。 <11.文件包含
#!/bin/bash# author:W3Cschool教程# url:www.w3cschool.cn#使用 . 号来引用test1.sh 文件. ./test1.sh# 或者使用以下包含文件代码# source ./test1.shecho "W3Cschool教程官网地址:$url" $ chmod +x test2.sh $ ./test2.sh W3Cschool教程官网地址:http://www.w3cschool.cn- Linuxshell编程入门
- Tomcat上文件的绝对路径访问笔记
- 《甲子岁元日呈郑侍御明府》翻译原文赏析诗人
- java运行时异常和非运行时异常区别,高级面试题
- Secureallocator
- vue项目中viewui两个时间选择器的判断开始时间不
- 漫谈时间序列预测
- jquery获取input的value问题说明
- 如何将成员函数分配给数组并调用它-Howtoassigna
- 国庆后这个“星期一”是过不去了,听我说:要
- 鲁大师2022年度硬件榜单即将出炉,多维度看谁能
- javaio系列07之FileInputStream和FileOutputStream
- PlayFramework前言
- php获取日期(当天,前天,明天,本周,本月,本
- mysql数据库如何清空密码_linux中清空Mysql数据库