输出系统变量
echo “PATH=$PATH”
显示当前 shell 中所有变量
set
自定义变量
A=100 echo “A=$A”
uset一个变量
unset A echo “A=$A”
声明静态的变量 B=2,不能 unset
readonly A=99
环境变量
export TOMCAT_HOME
<a name="SsPPO"></a>
## 将命令的返回值赋给变量
```shell
# 将命令的返回值赋给变量
RESULT=`ls -l /home`
echo $RESULT
MY_DATE=$(DATE)
echo "date=$MY_DATE"
多行注释
!#/bin/bash
:<<!
多行注释
哈哈
嘿嘿
!
位置参数变量
当我们执行一个 shell 脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量,比如 : ./myshell.sh 100 200
, 这个就是一个执行 shell 的命令行,可以在 myshell脚本中获取到参数信息。
- $n (功能描述:n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数,十
以上的参数需要用大括号包含,如${10})
- $ (功能描述:这个变量代表命令行中所有的参数,$把所有的参数看成一个整体)
- $@(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
$#(功能描述:这个变量代表命令行中所有参数的个数)
#!/bin/bash echo "$0 $1 $2" echo "$*" echo "$@" echo "参数个数=$#"
预定义变量
就是 shell 设计者事先已经定义好的变量,可以直接在 shell 脚本中使用。
$$ (功能描述:当前进程的进程号(PID))
- $! (功能描述:后台运行的最后一个进程的进程号(PID))
- $? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令
正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令
执行不正确了。)
#!/bin/bash
echo "当前的进程号=$$"
echo "最后的进程号=$!"
echo "执行的值=$?"
运算符
基本
!#/bin/bash
(())比[]功能更强
RESULT1=$(((2+3) * 4))
# 变量和运算符之间必须有空格
TEMP=`expr 2 + 3`
RESULT2=`expr $TEMP \* 4`
echo "result1=$RESULT1"
echo "result2=$RESULT2"
条件判断、流程控制
1)两个整数的比较
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
2) 按照文件权限进行判断
-r 有读的权限 [ -r 文件 ]
-w 有写的权限
-x 有执行的权限
3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目
if
#!/bin/bash
# 是否大于
if [ $1 -gt 60 ]
then
echo "大于"
elif [ $1 -lt 30 ]
then
echo "小于"
else
echo "之间"
fi
# 文件是否存在
if [ -e /root/shell/aaa.txt ]
then
echo "存在"
else
echo "不存在"
fi
case
#!/bin/bash
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
for
#!/bin/bash
# for-in
for i in "$*"
do
echo "the num is $i"
done
echo "===================="
for j in "$@"
do
echo "the num is $j"
done
# for条件控制
SUM=0
for((i=1;i<=100;i++))
do
SUM=$[ $SUM + $i ]
done
echo "sum=$SUM"
while
#!/bin/bash
SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[ $SUM + $i ]
i=$[ $i + 1 ]
done
echo "while-sum=$SUM"
读取控制台输入
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。
参数
变量:指定读取值的变量名
#!/bin/bash
read -t 10 -p "请输入一个数num1=" NUM1
echo "你输入的值是num1=$NUM1"
函数
系统函数
basename
dirname
basename $JAVA_HOME
dirname $JAVA_HOME
自定义函数
#!/bin/bash
# 计算输入两个参数的和
function getSum() {
SUM=$[ $n1 + $n2 ]
echo "和是=$SUM"
}
read -p "请输入第一个数n1" n1
read -p "请输入第二个数n1" n2
# 调用
getSum $n1 $n2
标准输入stdin输出stdout
cat << EOF
!#/bin/bash
cat <<EOF
Hello,world!
EOF
cat <<-EOF
Hello,world!
EOF