shell例子

从1叠加到100

echo $[$(echo +{1..100})]
echo $[(100+1)*(100/2)]
seq -s '+' 100 |bc

判断参数是否为空-空退出并打印null

#!/bin/sh
echo $1
name=${1:?"null"}
echo $name

循环数组

for ((i=0;i<${#o[*]};i++))
do
    echo ${o[$i]}
done

判断路径

if [ -d /root/Desktop/text/123 ];then
    echo "找到了123"
    if [ -d /root/Desktop/text ]
    then echo "找到了text"
    else echo "没找到text"
    fi
else echo "没找到123文件夹"
fi

找出出现次数最多

awk '{print $1}' file|sort |uniq -c|sort -k1r

判断脚本参数是否正确

./test.sh  -p 123 -P 3306 -h 127.0.0.1 -u root
#!/bin/sh
if [ $# -ne 8 ];then
    echo "USAGE: $0 -u user -p passwd -P port -h host"
    exit 1
fi

while getopts :u:p:P:h: name
do
    case $name in
    u)
        mysql_user=$OPTARG
    ;;
    p)
        mysql_passwd=$OPTARG
    ;;
    P)
        mysql_port=$OPTARG
    ;;
    h)
        mysql_host=$OPTARG
    ;;
    *)
        echo "USAGE: $0 -u user -p passwd -P port -h host"
        exit 1
    ;;
    esac
done

if [ -z $mysql_user ] || [ -z $mysql_passwd ] || [ -z $mysql_port ] || [ -z $mysql_host ]
then
    echo "USAGE: $0 -u user -p passwd -P port -h host"
    exit 1
fi

echo $mysql_user $mysql_passwd $mysql_port  $mysql_host
#结果 root 123 3306 127.0.0.1

正则匹配邮箱

^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$

打印表格

#!/bin/sh
clear
awk 'BEGIN{
print "+--------------------+--------------------+";
printf "|%-20s|%-20s|\n","Name","Number";
print "+--------------------+--------------------+";
}'
a=`grep "^[A-Z]" a.txt |sort +1 -n |awk '{print $1":"$2}'`
#cat a.txt |sort +1 -n |while read list
for list in $a
do
    name=`echo $list |awk -F: '{print $1}'`
    number=`echo $list |awk -F: '{print $2}'`
    awk 'BEGIN{printf "|%-20s|%-20s|\n","'"$name"'","'"$number"'";
    print "+--------------------+--------------------+";
    }'
done
awk 'BEGIN{
print "              *** The End ***              "
print "                                           "
}'

判断日期是否合法

#!/bin/sh
while read a
do
  if echo $a | grep -q "-" && date -d $a +%Y%m%d > /dev/null 2>&1
  then
    if echo $a | grep -e '^[0-9]\{4\}-[01][0-9]-[0-3][0-9]$'
    then
        break
    else
        echo "您输入的日期不合法,请从新输入!"
    fi
  else
    echo "您输入的日期不合法,请从新输入!"
  fi
done
echo "日期为$a"

打印日期段所有日期

#!/bin/bash
qsrq=20010101
jsrq=20010227
n=0
>tmp
while :;do
current=$(date +%Y%m%d -d"$n day $qsrq")
if [[ $current == $jsrq ]];then
    echo $current >>tmp;break
else
    echo $current >>tmp
    ((n++))
fi
done
rq=`awk 'NR==1{print}' tmp`

打印提示

cat <<EOF
#内容
 EOF

登陆远程执行命令

# 特殊符号需要 \ 转义
ssh root@ip << EOF
#执行命令
EOF

数学计算的小算法

#!/bin/sh
A=1
B=1
while [ $A -le 10 ]
do
    SUM=`expr $A \* $B`
    echo "$SUM"
    if [ $A = 10 ]
    then
        B=`expr $B + 1`
        A=1
    fi
    A=`expr $A + 1`
done

多行合并

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值