传递参数
- 语法
./xxx.sh 参数a 参数b 参数c
- 取
echo ${1} ${2} ${3}
- 特殊字符
$#
: 个数
$*
: 列表
PS:${0} 是取得当前文件名
基本运算符
-
算数运算符 注意转义字符
"+"、"-"、"*" 、"/"、"="、"=="a=100 b=100 c=`expr $a + $b` c=`expr $a - $b` c=`expr $a \* $b` c=`expr $a / $b` # "=" a=8388 b=$a echo $b #"==" if [[ $a == $b ]]; then echo "YES" else echo "NO" fi
-
关系运算符
-eq = true -ne != true -gt > true -lt < true -ge >= true -le <= true if [[ $a -eq $b ]]; then echo "YES" else echo "NO" fi
-
布尔值运算 :与、或、非
"-a"、"-o"、"!"if [[ $a != $b ]]; then echo "YES" else echo "NO" fi
-
逻辑运算符
"&&"、"||"a=100 b=200 if [ $a -lt 140 ] && [ $b -ge 200 ] then echo "YES" else echo "NO" fi OUT: YES
-
字符串运算 等、不等、长度为0、长度不为0、不为空、
"="、"!="、"-z"、"-n"、"string"name="jianshu" if [ -n ${name} ] then echo "YES" else echo "NO" fi #PS: 发现 下面两个执行后的结果是一致的,无法理解 if [ -n ${name} ] if [ ${name} ]
-
文件测试运算符: "-xxx file"
-d: 是一个目录
-r : 可读
-w: 可写
-x: 可执行文件
-f: YES:普通文件 NO:特殊文件
-s: 文件有内容
-e: 文件有内容(包含目录和文件)file="/Users" if [ -x $file ] then echo "YES" else echo "NO" fi
流程控制
-
if、 if else、if-else-if-else
a="1" b="2" if [ $a = $b ] then echo "==" elif [ $a ] then echo "a=nil" else echo "!=" fi
-
for
#1.读取简单值 for name in "1" "2" "3" do echo ${name} done #2.读取复杂值(特殊字符+转义) for name in "I don\`t Know" do echo ${name} done #3. 变量读取列表 list="www . jian shu . com" for name in ${list} do echo ${name} done OUT: www . jian shu . com #4. 读取目录-> 通配符 list="/Users/tanxk/*" for name in ${list} do echo ${name} done #5. 嵌套循环 for ((a=1; a<5; a++)) do echo ${a} done for ((a=1; a<5; a++)) do echo ${a} for ((b=5; b<20; b++)) do echo ${b} done done
-
while
a=1 while(($a<10)) do echo ${a} a=`expr $a + 1` #整数运算:expr done while true #死循环 do echo "Hello" done
-
case
number=${1} case $number in 1) echo "1" ;; 2) echo "2" ;; 3) echo "3" ;; esac
网友评论