2022-6-15Linux课堂笔记

# Shell脚本

怎么创建脚本--> *.sh

怎么执行脚本?有几种方式 

1. 绝对路径  --> 从根目录 /

2. bash 脚本名称   |  sh 脚本名称

用户自定义变量

定义变量:变量名=变量值   'hello world' 

使用变量:${变量名}

系统内置变量($)

$# : 获取参数个数

$*/$@ : 获取参数列表

$n : n是数字,表示获取第n个参数

$? : 获取上一个命令执行的结果

$PATH: 环境变量路径   /usr/bin

$HOME: 获取家目录     /root   /home/用户名

数值计算:

如果要做算术运算,则需要使用$(( 计算式 )) $[ 计算式 ]

判断式:

语法:test 表达式

数值(比较运算符):-eq  -ne   -lt  -gt  -le  -ge

字符串:==   !=   -z  -n

文件:-f  -d  -e  -w   -r  -x

多重判断:

-a : 并且  and

-o : 或者  or

!  : 取反  not

判断一个目录是否存在,如果存在,则判断是否为文件

dir='/usr/local/src/aa'

test -e dir -a -f dir

第二种判断式写法:[ 表达式 ]

(( ))

if语法:

if [判断式]

then

  语句块

fi

if ((判断式)); then

  语句块

elif ((判断式)); then

  语句块

else

  语句块

fi

# 请输入一个y/n,根据输入值判断是否继续或退出。

read -p "请输入一个数值:" num    /   $n  获取第n个参数

read -p "请输入一个y/n" arg

if [[ $arg == 'y' ]]; then

   echo "继续"

elif [[ $arg == 'n' ]]; then

  echo "退出"

else

  echo "输入有误"

fi

# 输入一个年份,判断是否为闰年  逻辑判断符号: && || !

# 闰年:能被4整除且不能被100整除,或者能直接被400整除

2000   2004   2008

read -p "请输入一个年份:" year

if (( ($year % 4 == 0 && $year % 100 != 0) || $year % 400 == 0 )); then

  echo "闰年"

else

  echo "平年"

fi

# 使用while循环完成1...10的打印

i=1

while (( i <= 10 )) ; do

  echo $i

  i=$((i + 1))   # $(()) 只能做计算,不能做赋值

done

# 求偶数和

i=1

total=0

while (( i <= 10 )) ; do

  if (( i % 2 == 0 ));then

     total=$(( total + i ))

  fi

  i=$((i + 1))

done

echo $total

# 死循环

while (( 1 == 1  )) ; do

  read -p "请输入一个数值:" num

  if [[ $num == 'x'  ]];then

     break

  fi

done

# for 循环

for 变量名 in  空格分割的列表 ; do

done

# 使用for循环输出1..5

for num in 1 2 3 4 5 ; do

  echo $num

done

for num in 1 2 3 4 5 ; do echo $num ; done

for str in a b c d e ; do  echo $str ;done

# 写一个脚本,用于数值动态求和,求和数值个数不固定

sum.sh  1 2 3 4   参数不固定

for  $*/$@    while  $#  $n 

sum=0

for num in $* ; do

 sum=$(( num + sum ))

done

echo $sum

#####################################################

i=1

while (( i <= $# ));do

    num=$i

    sum=$(( num + sum ))

    i=$(( i + 1 ))

done

echo $sum

#####################################################

for (( 初始值; 结束条件; 迭代器)); do 

done

for (( i=0;i<=10;i++)); do echo $i; done

for i in seq ; do

done

seq n     # 从1开始到指定n结束

seq n m   # 从n开始到指定m结束

seq n s m # 从n开始到指定m结束,中间间隔 s      如果s为-1则表示倒序

如果在脚本中要执行命令,并获取命令执行后的结果,则需要使用`` 或者 $() 包裹

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值