你会linux是吗?一点点。
那会shell脚本吗?不会。(就尴尬了不是)
所以抽空学习了一波shell脚本,这个语法跟php相似,但是呢有些格式要求,比如if语句,像python一样严谨。所以呢,还是要特别注意一些的。
下面就直接附上本人的学习的脚本代码,基本内容都涵盖了,有些细节问题就去查查linux命令或者看看其它教程网站都能查到。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240
| #!/bin/bash # author:dalai # www.imdalai.com
# learn bash
# 调试bash脚本 # 将 -xv 参数添加到 #!/bin/bash后
##这一行说明要使用的 shell。 ##!/bin/bash 表示脚本使用 /bin/bash。 ##对于 python 脚本,就是 #!/usr/bin/python。
# 变量
name="linux"
echo ${name} echo $name
# 拼接字符串 greeting="hello , ${name} !" s1="good" s2="game" s3=${s1}${s2}
echo $s3 echo $greeting
# 循环 for skill in Ada Coffe Action Java;do echo "${skill}script" done
for file in `ls /home`;do echo $file done
# 传递参数
echo "参数个数:$#" echo "文件名:$0" echo "如何检查之前的命令是否运行成功:$?"
for i in "$@";do echo $i done
# 数组 my_arr=(a b c d 1 2 3)
for i in ${my_arr[*]};do echo $i done
echo ${my_arr[*]};
# 基本运算符 # + - * / % = == !=
val=`expr 2 + 2` echo "两个数和为:$val";
a=10 b=20
let c=$a + $b #方法1 echo $c
A=5 B=6 echo $(($A+$B)) # 方法 2 echo $[$A+$B] # 方法 3 expr $A + $B # 方法 4 echo $A+$B | bc # 方法 5 awk 'BEGIN{print '"$A"'+'"$B"'}' # 方法 6 #awk是linux命令,是一个强大的文本分析工具
if [ $a == $b ] then echo "a==b" fi if [ $a != $b ] then echo "a!=b" fi
# 关系运算符 # -eq -ne -gt -lt -ge -le
if [ $a -eq $b ] then echo "$a -eq $b : a 等于 b " else echo "$a -eq $b : a 不等于 b" fi
# 布尔运算 # ! -o -a
if [ $a -lt 100 -o $b -gt 100 ] then echo "$a 小于 100 或者 $b 大于 100: 返回: true" else echo "$a 小于 100 或者 $b 大于100 ;返回 false" fi
# 逻辑运算符 # && || # 跟-a 和 -o 一样
# 字符串运算符 # = != -z -n str
if [ $a = $b ] then echo "$a = $b : a 等于 b" else echo "$a =$b : a 不等于 b" fi
# 文件检测运算符 # 可以检测文件各种权限和属性
if [ -f /var/log/messages] then echo "file exists" fi
# 输出
echo it is a test echo "\"it is a test\""
# 输出至文件
echo "it is a test" > test
echo `date`
# printf 命令
# 一些格式化输出方式
# test 命令 # 检查 数值 字符 和文件
if test $[a] -eq $[num2] then echo '两个数相等' else echo '两个数不想等' fi
# 流程控制 # 和java php 不一样,sh的流程控制不可为空
if [ $a == $b ] then echo "a等于b" elif [ $a -gt $b ] then echo "a大于b" elif [ $a -lt $b ] then echo "a小于b" else echo "没有符合条件" fi
# while 语句
int=1 while(( $int<=5 )) do echo $int let "int++" done
# until 循环 # 很少用
# 无限循环 # while: # do # command # done
# case
echo "输入1到4之间的数字" echo '你输入的数字为:' read num case $num in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4 之间的数字' ;; esac
# break 和 continue # 只能在 循环中使用 ,case 不可以,case的两个分号就是起到了break的作用
# 函数 # 可带function fun() 也可 fun()
demoFun(){ echo '第一个函数' }
demoFun
# 函数参数 # 函数体内部,通过$n的形式获取参数,$1表示第一个参数,
# $# $* $$ $! $@ $- $?
# 输出重定向
echo 'imdalai.com' >> test
# 重定向将后面的输出的标准输出和标准错误到某文件 exec >log.txt 2>&1
# 文件包含 # . filename 或者 source filename
# ---. ./test # ---被包含的文件test不需要可执行权限
# export # 使变量在子shell中可用
|
完结。