shell知识点总结

本文总结了Shell脚本的基础知识,包括标准输入、条件判断(如文件存在、字符串比较)、循环(while、for、case...esac)、布尔和逻辑运算符、数组操作以及自定义函数的使用。此外,还探讨了如何遍历输出MySQL数据和文件夹内容,以及在函数中处理参数的方法。
摘要由CSDN通过智能技术生成

标准输入:控制台输入内容到变量name

#!/bin/bash
read name
echo $name 

if 条件判断:

如果$1 字符串长度为0即为空,则date=`date '+%Y%m%d'`,否则为date=$1

if [ -z $1 ]
then 
date=`date '+%Y%m%d'`
else
date=$1
fi

如果文件存在且大小不为0为真
if [ -s 文件名 ]
如果文件存在 
if [ -e 文件名 ]
如果两个字符串相同则为真
if [string1 =string2 ] 或者 if [ string1 == string2 ]
不相等 
if [string1 != string2 ]

if 条件判断
then 
elif 条件判断 
then 
else 
fi

while 循环:

i=0 
while(($i<=10))
do
#循环体
#自增
let "i++"
done

while使用注意事项:

利用管道在while循环内部对变量赋值,在循环外面会失效

#!/bin/bash
i=0
cat 1.dat | while read line
do
   array[i]=$line
   let i++
done

echo "${array[*]}"

此时array数组内容为空,可以换种写法

#!/bin/bash
i=0
while read line
do
    array[i]=$line
    let i++
done < 1.dat
echo "${array[*]}"

此时array数组内容就不为空了

for循环

for (( i=1;i<=row_count;i++ ));
do 
echo "${i}"
done

case ... esac 多选择语句 

num可以是数字也可以是字符串

echo 输入1到4之间的数字
read num 
case $num in 
1) echo "你输入了1"
;;
2) echo "你输入了2"
;;
3) echo "你输入了3"
;;
*) echo "你没有输入1到3之间的整数"
;;
esac 

布尔运算符

-a 与 同真为真,有假为假 [!false] true
-o 或  有真为真,全假为假 [ $a -lt 20 -o $b -gt 100 ] true 
非  真为假,假为真 [ $a -lt 20 -a $b -gt 100 ]  false

逻辑运算符

&& 逻辑的and [[ $a -lt 100 && $b -gt 100 ]] false
|| 逻辑的or  [[ $a -lt 100 || $b -gt 100 ]] true 

表达式:

表达式和运算符之间要用空格隔开

i=0
j=1
相加
j=`expr $i + 1`
相乘
j=`expr $i \* 1`
相除
j=`expr $i / 1`

数组:

hourarray=("00" "01" "02" "03" "04" "05" "06" "07" "08" "09" "10")
hourarray[0]="00"
hourarray[1]="01"
获取数组所有元素
echo "${hourarray[*]}" 或者 echo "${hourarray[@]}"
获取数组的长度
echo "${#hourarray[*]}" 或者 echo "${#hourarray[@]}"

遍历输出从mysql中查询出来的数据

mysql -u${user} -p${pwd} -h{ip} database -Ne 'select * from t1' | while read nums
do 
echo "${nums}"
done 

循环遍历文件夹下的文件名

for file in `ls`;
do 
done

用户自定义函数 


 如果没有return 将以函数最后一条命令运行结果作为返回值
return 的返回值在调用函数后通过$?获取 

functionA(){
echo "两数求和:"
read anum
read bnum
echo "两个数字分别是$anum和$bnum"
return $(($anum+$bnum))
}
调用:
functionA
echo "两个数字之和为$? !"

可以为函数指定参数
functionA 1 2 3 4 5 6 7 8 9 34 73
注意在函数内使用参数如果参数个数>=10 则需要使用${10} 和${11} 要加上花括号
使用$10 取不到第10个参数的值,参数个数<10 可以使用 $1 不用加花括号

$# 参数总个数
$* 以一个字符显示所有参数
$@ 与$*相同,不同的是$@以多个字符显示每个参数

shell中0 代表true 0以外的值代表false

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值