shell

脚本----shell编程

1. 注释
# 单行注释---- 在注释内容前加#
# 多行注释
:<<EOF
多行注释
多行注释
……
EOF
2. 输出
# echo 输出内容-------输出完内容(打印完)自动换行

# echo -n 输出内容  -------- 相当于printf
 
# printf 输出内容----- 输出完内容后不会换行
printf 100
 
3. 输入

# read 变量名------不会有提示信息,其余功能与python中的input相同
read name

# 若需要有提示信息,可以配合printf运用:
printf 请输入姓名:
read name

# echo name会输出name这个字符串,要输出它的值须加上$
echo $name
# 只读变量----只能读不能
# readonly a
4. 变量

1)定义变量

变量名=值------等号两边不能有空格

b=100

2)使用变量

$变量

${变量}

age=18
echo $age
age2=${age}
echo ${age2}
5. linux指令
# shell脚本中可以直接执行Linux指令
# 1)直接执行指令
ls -l
# rm -f a_ln2

# 2)获取指令结果
# 法1:变量=$(指令)
t1=$(date "+%Y年%m月%d日 %H-%M-%S")
echo $t1

# 法2:变量=`指令` -----反引号
t2=`date "+%Y年%m月%d日 %H-%M-%S"`
echo $t2
6. 字符串
# shell中的字符串可以用单引号、双引号、不加引号
str1=abc
# 不加引号也是字符串
str2='abc'
str3="abc"
str4='abc\n123'

# 1)字符串拼接:"固定字符串内容${变量名}"
a='abc'
b=123
 # 两个字符串拼接:双引号拼接
result="${a}${b}"
result2="hello,${b}"
echo $result
echo $result2

printf 请输入名字:
read name
msg="${name},你好!欢迎来到霍格沃兹,或许你已经有了心仪的学院"
echo $msg
 
# 2)字符串长度
string="你好!欢迎来到霍格沃兹,或许你已经有了心仪的学院"
echo ${#string}

# 3) 字符串提取-----下标是从0开始

# 第一个数是所提取字段第一个字的下标,第二个数是往后提取几个字
# 第一个数是所提取字段第一个字的下标,第二个数是往后提取几个字
# 字符串:下标:个数   --从字符串中指定下标开始获取指定个数字符,返回一>    个新的字符串
# 字符串:下标:1   -- 获取字符串中指定下标对应的字符
# 字符串:下标     -- 从指定下标开始获取到字符串最后

echo ${string:7:4}
7. 数组

数组名=(元素1 元素2 元素3 ...)

若元素中有空格,则需要给这个元素加引号

names=(小明 小红 小南)
names1[0]=Tom
names1[1]=Jerry

# 直接使用数组名使用的其实是数组的第一个元素

# 下标操作--- 数组[下标]
echo ${names[0]}
echo ${names[1]}

# 获取数组长度
echo ${#names[@]}
echo ${#names[*]}

# 获取数组指定下标元素的长度
# ${#数组[下标]}

names2=(后羿 王昭君 百里守约)
echo ${#names2[2]}
8. 运算符

算术运算符、关系运算符(比较)、布尔运算符(逻辑)、字符串运算符

# 1) 算术运算:+ — * /
#  运算符左右必须要有空格
# 加减法: 
a=`expr 10 + 20`
echo $a
 
b=100
echo `expr $b -20`

# 乘法:

echo `expr 10 \* 3`

# 除法:
# 整数除法
echo `20 / 3`

# 小数除法
echo `expr "scale=2;10 / 3"|bc`

# 求余数
echo `10 % 3`
# 2) 关系运算符:需要与分支或循环结构结合使用
# -eq  ---  等于,相当于 ==
# -ne  ---  不等于,相当于!=
# -gt  ---  大于
# -lt  ---  小于
# -ge  ---  大于等于
# -le  ---  小于等于
# 使用语法: [ 值1 关系运算符 值2 ]

## 注意空格

a=100
b=10
if [ a -ne b ]
then
   echo a不等于b
else
   echo a等于b
fi
# 3)布尔运算符

# !    --  逻辑非运算
# -o   --  逻辑或运算
# -a   --  逻辑与运算

age=18
score=95
# 参加比赛的条件:分数大于90分并且年龄大于等于18岁
 
if [ age -ge 18 -a score gt 90 ]
then
    echo 可以参加比赛
else
    echo 不可以参加比赛
fi

# 4) 字符串运算符
 
# [ 字符串1 = 字符串2 ]    -- 判断两个字符串是否相等
# [ 字符串1 != 字符串2 ]   -- 不相等
# [ -z 字符串]   -- 判断字符串长度是否为0
# [ -n "字符串" ]    -- 判断字符串长度是否不为0
# [ $ 字符串 ]   -- 判断字符串是否是空串

a=abc
b=ghf

if [ $a = $b ]
then
    echo a和b相等
else
    echo a和b不相等
fi
9. if

语法1:

if 条件语句

then

满足条件执行的代码

fi

语法2:

if 条件语句

then

满足条件执行的代码

else

不满足条件执行的代码

fi

语法3:

if 条件语句1

then

代码块1

elif 条件语句2

then

代码块2

elif 条件语句3

then

代码块3

else

代码块N

fi

10. for循环与while循环
# for循环
# 遍历数组
a1=(10 abc 了)
for i in ${a1[@]}
do
    echo "数组:${i}"
done

# 遍历多个值
for i in 10 20 "您好" 123
do
   echo "值:${i}"
done

# while循环
 
# 遍历字符串
str1='erdch890'
i=0
len=${#str1}
while [ $i -lt $len ]
do
   echo ${str1:${i}:1}
   i=`expr ${i} + 1`
done

# 计算1+2+……+100

num=1
sum=0
while [ ${num} -le 100 ]
do
sum=`expr ${sum} + ${num}`
num=`expr ${num} + 1`
done

echo ${sum}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值