Contents
  1. 1. 注意事项
  2. 2. 运行 shell脚本的方法
  3. 3. if 判断
    1. 3.1. 标准的if 判断写法
  4. 4. 申明变量
  5. 5. for 循环

注意事项

  • 在ubutun上,申明变量的时候 ‘=’ 之间不能有空格,但是if 条件判断的时候一定要有空格

    myname=huangzhenshi
    echo $myname
    if [ !$myname = "huangzhenshi" ]; then
    echo "access deny"
    fi
  • if [条件]; then fi, 如果分号省略的话,then 必须换行,否则会报错,因为在解析一个分号,或者一次换行的时候,操作系统会进行一次逻辑判断。

  • 脚本的执行方式,最好用 ./的方式 或者绝对路径的方式来执行,而不是用sh的方式,因为sh的方式要求更严格,对shell的格式,例如 if判断的 == 在sh执行下报错,在 ./方式下正常

  • if [条件] if 和[ 之间一定要有空格啊,真是坑爹

运行 shell脚本的方法

其中 第四和第五种要求权限
1)source .sh 在当前线程当中执行 shell脚本,变量通用
2)sh
.sh 不需要执行权限,只需要有sh的权限即可,然后通过sh 调用.sh 文件
3).
.sh 在当前shell环境中执行 bash shell脚本
4)/绝对路径/*.sh /home/huang/test.sh 直接运行
5)./startup.sh

if 判断

  • 演示 or(-o) 、 and(-a) 和! 运算
  • $# 表示参数的长度
  • $0 代表脚本的名字 $1第一个参数
  • ! 运算后面最好接一个空格,否则字符串不报错,但是如果跟的是数字的话就一定需要空格,否则报错
  • 数字比大小 -eq -ne -gt -lt -ge -le (相等 、不等、大于、小于、不大于、不小于)
  • 数字比较大小 也可以直接用 = 、 != ,但是不能用 > <等符号,一般用于参数的个数判断
  • -z 判断是否为0 或者为空字符串
  • if 判断引用变量都用 “” 包起来,不然变量含空格的时候就会报错
  • 判断尽量全部用 = 号,不用 ==号, 条件之后都用分号,不要省略

标准的if 判断写法

#/bin/bash
read -p "Do u wanna delete the file? Y/N:" yn
if [ "$yn" = "Y" -o "$yn" = "y" ]; then
echo "deleted success"
elif [ "$yn" = "N" -o "$yn" = "n" ]; then
echo "deleted interupted"
else
echo "operation fail ,input error"
fi
#!/bin/bash
if [ "$1" = "start" ]
then
echo "do start"
elif [ "$1" = "stop" ]
then
echo "do stop"
else
echo "Please make sure the positon variable is start or stop."
fi

result

root@huang-virtual-machine:/home/huang# source testif.sh start
do start
root@huang-virtual-machine:/home/huang# source testif.sh stop
do stop
root@huang-virtual-machine:/home/huang# source testif.sh test
Please make sure the positon variable is start or stop.

逻辑 and or !

#!/bin/bash
read -p "please input your name: " name
# 演示 or and 和! 运算
if [ "$name" = "huang" -o $name = "Huang" ]; then
echo "welcome Admin Huang"
elif [ "$name" = "boss" ];
then
echo "welcome manager"
else
echo "Welcome visit our website: "$name
fi
if [ "$1" = "huang" -a $2 = "zhenshi" ]; then
echo "Welcome superAdmin Huang zhenshi"
elif [ ! "$1" = "boss" ]; then
echo "fuck the hell"
else
echo "hello boss"
fi
echo "argument length is "$#
if [ ! $# -eq 2 ]
then
echo "argument length error"
else
echo "length correct"
fi
if [ -z "$3" ]
then
echo "we need more than 3 arguments"
fi

申明变量

  • 直接等号申明
    name='huangzhenshi'
    echo $name

可以通过大括号指明变量,这样就可以无缝拼接字符串了,否则就可以空格 来拼接字符串

root@huang-virtual-machine:/home/huang# echo ${name}666
huangzhenshi666
$name 666
huangzhenshi 666
  • 通过read获取变量
    1) -s 不显示输入的字符
    2) -p 显示提示符
    3) -t 光标等待时间
# define variable by read
read -s -t 20 -p "please type your password:" password
echo connecting
echo "your password:'"${password}"'is correct!"

Export
直接运行的话会打印出所有的环境变量
Export 变量名 会把该变量变成环境变量

Declare
-I 声明的变量类型为 整数
-x 声明的变量为环境变量
+x 把环境变量取消掉

Declare –I sum=3+3
Echo $sum //6

Declare -x name=huang //设置环境变量 name为huang

for 循环

#!/bin/bash
for((i=1;i<=10;i++));
do
echo $(expr $i \* 3 + 1);
done
#!/bin/bash
for i in $* ;
do
echo $i is input chart\! ;
done
#!/bin/bash
for i in f1 f2 f3 ;
do
echo $i is appoint ;
done
Contents
  1. 1. 注意事项
  2. 2. 运行 shell脚本的方法
  3. 3. if 判断
    1. 3.1. 标准的if 判断写法
  4. 4. 申明变量
  5. 5. for 循环