shell脚本的那点小事儿--shell的echo认识(二)

内容一:

shell脚本语言echo

1.显示不普通字符串

#!/bin/bash
echo "iPhone X say hello world"

2.显示转义字符

#!/bin/bash
echo "\"iPhone X say hello world\""

3.显示变量

#!/bin/bash
name="jam"
echo "${name} is boy"

4.显示换行 \n

错误写法:

#!/bin/bash
echo "iPhone X say hello world \n but it is so expansive"

正确写法

#!/bin/bash
echo -e "iPhone X say hello world \n but it is so expansive"

5.不显示换行 \n

#!/bin/bash
echo -e "iPhone X say hello world\c"
echo "but it is so expansive"

6.显示一个执行命令

#!/bin/bash
echo `date` #(`是~按键,在数字1的左边)

7.退出命令:

语法: exit 状态码 -> 退出程序

#!/bin/bash
iphone="404 not found"
echo ${iphone}
exit
echo "over"

状态码

状态码 含义
0 指令执行成功
1 一般性未知错误
2 不适合shell指令
126 不可执行
127 没找到命令
130 通过control+c终止命令
255 正常范围内退出状态码

8.重定向(核心内容)

内容二: shell脚本的数组

1.语法

数组名=(value1 value2 value3)

2.1初始化数组

方式一

#!/bin/bash
array=("404 not found" "Andy" "Tom" "Lilei" "zhangsan")
# 输出 echo $数组名 默认打印第一个元素
echo $array

方式二

#!/bin/bash
name=()
name[0]="404 not found"
name[1]="Andy"
name[2]="Tom"
name[3]="Lilei"
name[4]="zhangsan"
echo ${name[3]}

2.2数组的读取

${数组名[数组下标]} 表示输出对应下标的数据

${数组名[@]或[*]}表示输出所有的数据

*将所有元素组合成一个字符串

@将所有元素逐一输出

 

2.3数组的长度

获取数组的元素个数:${#数组名[@]} ->获取所有的元素,并获取个数

获取数组中字符串的单个元素的长度:-> ${#数组名[元素下标]}

内容三:shell脚本的传递参数

1.语法 ./文件名称.sh param1 param2 param3 参数之间用空格隔开

./hello.sh "小明" "小猪" "小狗"

#!/bin/bash

value1=${1}
value2=${2}
value3=${3}

# 逐一输出参数
echo "${value1} ${value2} ${value3}"

# 输出参数个数
echo ${#}
echo ${*} 打印所有的参数,合并成一个字符串
echo ${@} 打印所有的参数,逐一打印

内容四:基本的运算符

1.算数运算符:

运算符 语法代码 例子 解析
+ a+b

#!/bin/bash

a=1

b=1

c=`expr $a + $b`

echo ${c}

输出:2

expr是固定语法两个元素相加(两个加数之间用空格)

- a-b

#!/bin/bash

a=1

b=1

c=`expr $a - $b`

echo ${c}

输出:0

expr是固定写法两个元素相减

* a*b

#!/bin/bash

a=2

b=100

c=`expr $a \* $b`

echo ${c}

输出:200

expr是固定写法两个元素相乘,需用\转译*

/ a/b

#!/bin/bash

a=2

b=100

c=`expr $a / $b`

echo ${c}

输出:0 不能整除 显示0

expr是固定写法两个元素相除

% a%b

#!/bin/bash

a=2

b=100

c=`expr $a % $b`

echo ${c}

输出:0

expr是固定写法两个元素求余数

= a=b

#!/bin/bash

a=2

b=100

c=$b

echo ${c}

输出:100

赋值运算
== a==b

a=84883

b=93859

if [ $a == $b ]

then

echo "a等于b"

else

echo "a不等于b"

fi

输出:a不等于b

 恒等运算符 

 必须if空格[]

2.关系运算符

运算符 语法代码 例子 解析
-eq a -eq b

#!/bin/bash

a=100

b=2

if [ $a -eq $b ]

then

echo "a等于b"

else

echo "a不等于b"

fi

输出结果:a不等于b

判断两个元素是否相等,相等返回true

-ne a -ne b

#!/bin/bash

a=100

b=2

if [ $a -ne $b ]

then

echo "a不等于b"

else

echo "a等于b"

fi

输出结果:a不等于b

判断两个元素是否不相等,不相等返回true

-gt a -gt b

#!/bin/bash

a=100

b=2

if [ $a -gt $b ]

then

echo "a大于b"

else

echo "a小于b"

fi

输出结果:a大于b

判断左边数是否大于右边,大于返回true

-lt a -lt b

#!/bin/bash

a=100

b=2

if [ $a -lt $b ]

then

echo "a大于b"

else

echo "a小于b"

fi

输出结果:a小于b

判断左边数是否小于右边,小于返回true

-le a -le b

#!/bin/bash

a=100

b=2

if [ $a -le $b ]

then

echo "a小于b"

else

echo "a大于b"

fi

输出结果:a大于b

判断右边数是否大于左边,大于返回true

-ge a -ge b

#!/bin/bash

a=2

b=200

if [ $a -ge $b ]

then

echo "a小于b"

else

echo "a大于b"

fi

输出结果:a大于b

判断右边数是否小于左边,小于返回true

3.布尔运算符

运算符 语法代码 例子 解析
!("!") !=, !a, !b

#!/bin/bash

a=2

b=200

if [ $a != $b ]

then

echo "a不等于b"

else

echo "a等于b"

fi

输出结果:a不等于b

-o("or->|")

condition1

-o

condition2

#!/bin/bash

a=2

b=200

if [ $a != $b -o $a -eq 100 ]

then

echo "a != b"

else

echo "a == b"

fi

输出结果:a != b

或运算,有一个表达式

为true,返回true

-a("and->&")

condition1

-a

condition2

#!/bin/bash

a=2

b=200

if [ $a != $b -a $a -eq 100 ]

then

echo "success"

else

echo "falure"

fi

输出结果:falure

与运算,所有表达式为

true,返回true

4.逻辑运算符

运算符 语法代码 例子 解析
&&

condition1

&&

condition2

#!/bin/bash

a=2

b=200

if [ $a != $b ] && [ $a -eq 100 ]

then

echo "success"

else

echo "falure"

fi

输出结果:falure

逻辑与,条件都成立,才成立

||

condition1

||

condition2

#!/bin/bash

a=2

b=200

if [ $a != $b ] || [ $a -eq 100 ]

then

echo "success"

else

echo "falure"

fi

输出结果:success

逻辑或,条件满足其一, 就成立

5.字符串运算符

运算符 语法代码 例子 解析
= a = b

#!/bin/bash

a="success"

b="falure"

if [ $a = $b ]

then

echo "is equal"

else

echo "is not equal"

fi

输出结果:is not equal

判断两个字符串是否相等,相等返回true

!= a != b

#!/bin/bash

a="success"

b="falure"

if [ $a != $b ]

then

echo "is not equal"

else

echo "is equal"

fi

输出结果:is not equal

判断两个字符串是否相等,不相等返回true

-z -z a

#!/bin/bash

a="success"

if [ -z $a ]

then

echo "string is null"

else

echo "string not null"

fi

输出结果: string not null

检测字符串的长度是

否零,长度为0返回true

-n -n a

#!/bin/bash

a="success"

if [ -n "$a" ]

then

echo "string not null"

else

echo "string is null"

fi

输出结果: string not null

检测字符串的长度是

否零,长度不为零返回true

$a

#!/bin/bash

a="success"

if [ $a ]

then

echo "string not null"

else

echo "string is null"

fi

输出结果: string not null

检测字符串是否为空,不为空返回true

6.文件处理运算符

运算符 语法代码 例子 解析
-d -d a

#!/bin/bash

file="/Users/avalanching/Desktop/hello.sh"

if [ -d $file ]

then

echo "it is path"

else

echo "it is not path"

fi

输出结果:it is path

检测一个字符串是不是一个文件目录,是就返 回true

-r -r a

#!/bin/bash

file="/Users/avalanching/Desktop/hello.sh"

if [ -r $file ]

then

echo "it is read"

else

echo "it is not read"

fi

输出结果:it is read

检测文件是否可读,如果可读放回true

-w -w a

#!/bin/bash

file="/Users/avalanching/Desktop/hello.sh"

if [ -w $file ]

then

echo "it is witre"

else

echo "it is not witre"

fi

输出结果:it is witre

检测文件是否可写,如果可写返回true

-x -x a

#!/bin/bash

file="/Users/avalanching/Desktop/hello.sh"

if [ -x $file ]

then

echo "it is enable"

else

echo "it is unenable"

fi

输出结果:it is enable

检测文件是否可执行,如果可以执行返回true

-f -f a

#!/bin/bash

file="/Users/avalanching/Desktop/hello.sh"

if [ -f $file ]

then

echo "it is normal"

else

echo "it is not normal"

fi

输出结果:it is normal

如果是普通文件,返回true
-s -s a

#!/bin/bash

file="/Users/avalanching/Desktop/hello.sh"

if [ -s $file ]

then

echo "it is not null"

else

echo "it is null"

fi

输出结果:it is not null

判断文件是否为空,如果为空返回fales,如果不为空返回true

-e -e a

#!/bin/bash

file="/Users/avalanching/Desktop/hello.sh"

if [ -e $file ]

then

echo "it is existence"

else

echo "it is not existence"

fi

输出结果:it is not null

检测文件是否存在,如果存在返回true,如果不存在返回false,文件夹和文件皆适用

内容五.条件控制语句

1.if

语法:

if [condition]
then
    code
fi

2.if-else

语法:

if [condition]
then
    code
else
    code
fi

3.if-else if-else

语法:

if [condition]
then
    code
elif [condition]
then
    code
else
    code
fi

4.for循环

for 变量名 in item1 item2 item3
do
    code
done

e.g NO.1:

#!/bin/bash
for name in "Jar" "Andy" "Tom" "Jam"
do
    echo ${name}
done

 

e.g NO.2:

#!/bin/bash
for name in "I don\`t know"
do
    echo ${name}
done

e.g NO.3:

#!/bin/bash
list="I don't know"
for value in ${list}
do
    echo $value
done

e.g NO.4:

#!/bin/bash
file="/Users/avalanching/Desktop/java/*"
for path in ${file}
do
    echo ${path}
done

e.g NO.5

#!/bin/bash
for ((a=0; a<5; a++))
do
    echo "a=${a}"
    for ((b=0; b

5.while循环

#!/bin/bash
a=1
while (($a<10))
do
    a=`expr $a + 1`
    echo ${a}
done

无限循环

#!/bin/bash
while :
do
    echo "hello world"
done

#!/bin/bash
while true
do
    echo "hello world"
done

或者

#!/bin/bash
for ((;;))
do
    echo "hello world"
done

6.case语句

#!/bin/bash
case vale in
value1)
    code
;;
value2)
    code
;;
value3)
    code
;;
esac

e.g:

#!/bin/bash
number=${1}
case $number in
1)
    echo "第一个";;
2)
    echo "第二个";;
esac

 

7.until循环

语法结构:

#!/bin/bash
until
do
    code
done

e.g:

#!/bin/bash
i=1
until (($i>1))
do
    echo "i=${i}"
    i=`expr $i + 1`
done

8.跳出循环

8.1 break 跳出单个循环

#!/bin/bash
for ((i=0;i<4;i++))
do
    echo "第${i}次循环"
if [ $i == 5]
then
    echo "退出循环"
break
fi
done

8.2 break 跳出内部循环

#!/bin/bash
for ((i=0;i<10;i++))
do
    echo "外层第${i}次循环"
    for ((j=0;j

8.3 break 跳出外部循环

#!/bin/bash
for ((i=0;i<10;i++))
do
    echo "外层第${i}次循环"
    for ((j=0;j

break number: number表示退出的循环层数

9.continue

#!/bin/bash
for ((i=0;i<10;i++))
do
    echo "外层循环第${i}次"
    for ((j=0;j

注意:以上的缩进是为了方便查看层级关系,如果在运行代码中报错(not found command),请去除缩进,注意if后的空格

你可能感兴趣的:(shell)