Linux

# 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、付费专栏及课程。

余额充值