• 变量名称一般习惯为大写

    变量

    基本

    ```shell

    !/bin/bash

输出系统变量

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

  1. <a name="SsPPO"></a>
  2. ## 将命令的返回值赋给变量
  3. ```shell
  4. # 将命令的返回值赋给变量
  5. RESULT=`ls -l /home`
  6. echo $RESULT
  7. MY_DATE=$(DATE)
  8. 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

shell脚本中的函数与子shell

标准输入stdin输出stdout

cat << EOF

cat <<EOF与cat <<-EOF的区别

!#/bin/bash
cat <<EOF
Hello,world!
EOF

cat <<-EOF
Hello,world!
      EOF

数组

Linux shell数组建立及使用