shell脚本的执行方式:
1、sh helloworld.sh 2、source helloworld.sh或 . helloworld.sh 3、使用脚本文件的绝对路径直接执行该脚本文件:/root/test/helloworld.sh(需要可执行权限) 最简单的shell编程: 第一步:打开文本编辑器 vim helloworld.sh 第二步:编写shell脚本 #!/bin/bash //指定shell解释器 echo 'hello world!' //shell命令,输出hello world! 第三部:执行shell脚本 source helloworld.sh 执行结果:hello world! 系統可接受的命令名称(command-name)可以从如下途径: * 明确路径所指定的外部命令 * 命令別名(alias) * 自定功能(function) * shell 內建命令(built-in) * $PATH 之下的外部命令 $PATH可以在~/.bash_profile中去添加自己想要添加的命令路径,添加之后即可在任意路径下去执行,如果没有配置,则需要到指定路径下去执行 $PATH添加命令路径之后,系统在执行命令的时候会将该路径添加到搜索路径中去,如果未添加,则系统不会搜索该路径下的命令集。 shell中的变量可分为三种形式:系统变量,自定义变量,特殊变量 自定义变量: shell中自定义变量通过 变量名=变量值 来定义,使用$变量名 来调用该变量,注意:定义变量的时候=前后不能有空格 如:name=zhangsan echo $name 执行结果:zhangsan 使用unset 变量名取消已经定义的变量 系统变量:如PATH PWD SHELL 等 使用$系统变量名调用系统变量 特殊变量: $#:表示参数的个数,常用于循环 $*:参数的内容 $$:当前shell进程的pid值 $?:前一命令返回的状态值(0为正常) $0 表示当前脚本名称 $1 第一个参数 $2 第二个参数 $N 第N个参数 特殊变量的简单测试: 打开编辑器: vim test.sh 编辑shell脚本: #!/bin/bash echo $# echo $* echo $$ echo $? echo $0 echo $1 echo $2 echo $3 执行shell脚本: sh test.sh 执行结果: 3 a b c 3242 0 test.sh a b c shell脚本中通过控制台输入,将输入传递给变量(类似java中的Scanner): read -p "请输入你的变量值:" KEY 将你从控制台输入的值传递给变量KEY shell脚本中也可以有控制语句if,case和循环语句for,while,用法和java类似,但是写法不一样: 简单的if语句: #!/bin/bash read -p "请输入你的姓名:" name if [ $name=zhangsan ] then echo i am zhangsan fi 数值比较实用的操作符: -eq:等于(Equal) -ne:不等于(Not Equal) -gt:大于(Greater Than) -lt:小于(Lesser Than) -le:小于或等于(Lesser or Equal) -ge:大于或等于(Greater or Equal) 字符串之间比较使用的操作符: =:字符串内容相同 !=:字符串内容不同,! 号表示相反的意思 -z:字符串内容为空 -n: string 判定字符串是否为非空,若string为空字符串,则为false。 注: -n 亦可省略 文件测试操作符: 如: [ -e /etc/hosts ] echo $? 返回上一条命令的返回状态 1 1表示条件不成立,即/etc/hosts不是一个目录(事实上他是一个文件,而不是目录) -d:测试是否为目录(Directory) -e:测试目录或文件是否存在(Exist) -f:测试是否为文件(File) -b: 该文件是否存在且为一个块设备文件 -L: 该文件是否存在且为一个链接文件 文件权限操作符: -r:测试当前用户是否有权限读取(Read) -w:测试当前用户是否有权限写入(Write) -x:测试当前用户是否有权限执行(eXcute) -s :测试该文件是否存在且为非空文件 两个简单的shell事例: 1、打印9*9乘法表: 2、猜商品价格游戏: