前言
1、Shell执行方式:子shell 本shell
子shell: bash sh (bash test.sh)
本shell: . source (. test.sh)
2、Shell与其他语言:
3、查看shell解释器:
[root@orange ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
一、变量
1、解释
shell 变量? 用一个固定的字符串去表示不固定的内容,便于修改。
2、变量类型
1. 自定义变量
定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip=192.168.2.115
引用变量: $变量名 或 ${变量名}
查看变量: echo $变量名; "set"可以查看所有变量(包括自定义变量和环境变量)
取消变量: unset 变量名
作用范围: 仅在当前shell中有效
变量赋值:
1. 显式赋值 变量名=变量值 示例: ip=192.168.1.255 school="BeiJing school" today1=`date +%F` today2=$(date +%F) 2. read 从键盘读入变量值 read 变量名 read -p "提示信息: " 变量名 read -t 5 -p "提示信息: " 变量名 //-t 等待5秒,后超时 read -n 2 变量名 //-n 只记录几个字符
例 read -p "请输入您测试的IP地址:" ip
ping -c1 $ip &>/dev/null && echo " $ip up" || echo "$ip down"
2.环境变量
定义环境变量: 方法一 export you=/home/backup
方法二 export you 将自定义变量转换成环境变量
引用环境变量: $变量名 或 ${变量名}
查看环境变量: echo $变量名 env 例如env |grep back_dir2
取消环境变量: unset 变量名
变量作用范围: 在当前shell和子shell有效 !!!
3.位置变量
命令 参数1 参数2 参数3 ....9以后特殊定义
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ...
4.预定义变量
预先定义过的变量
$0 脚本名 $* 所有的参数 $@ 所有的参数 $# 参数的个数 $$ 当前进程的PID $! 上一个后台进程的PID $? 上一个命令的返回值 0表示成功
二、变量的运算
方法一:expr
方法二:$(())
方法三:$[]
方法四:let 表达式
方法一:expr expr 1 + 2 expr $num1 + $num2 + - * / % (*是任意字符,使用 转义一下) +加 -减 *乘 /除
%取余
方法二:$(()) echo $(($num1+$num2)) + - * / % echo $((num1+num2)) echo $((5-3*2)) echo $(((5-3)*2)) echo $((2**3)) //(幂)2的3次方 sum=$((1+2)); echo $sum
方法三:$[] echo $[5+2] + - * / % echo $[5**2]
方法四:let 表达式 let sum=2+3; echo $sum let i++; echo $i