小试牛刀 2

本文介绍Shell脚本的基础知识,包括数组定义与操作、别名设置、日期处理等实用技巧,并提供多个实例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.数组和关联数组
 1)数组定义
 1.array_var=(1 2 3 4 5 6)
    example:
root@zhangjing-desktop:/home/zhangjing# echo ${arrary_var[0]}
1
 2.array_var[0]="test1"
   array_var[1]="test2"
   array_var[2]="test3"
   array_var[3]="test4"

 example:
root@zhangjing-desktop:~# array_var[0]="test1"
root@zhangjing-desktop:~# array_var[1]="test2"
root@zhangjing-desktop:~# array_var[2]="test3"
root@zhangjing-desktop:~# array_var[3]="test4"
root@zhangjing-desktop:~#
root@zhangjing-desktop:~# echo ${array_var[0]}
test1
        以清单形式打印出数组中所有值
root@zhangjing-desktop:~# echo ${array_var[*]} //或者使用@
test1 test2 test3 test4
root@zhangjing-desktop:~# echo ${array_var[@]}
test1 test2 test3 test4
        打印数组长度
root@zhangjing-desktop:~# echo ${#array_var[*]}
4

 2)关联数组------可以使用任意的文本作为索引
   1)声明
 declare -A ass_array
   2)两种添加元素的方法
      1)内嵌索引-值进行赋值 
root@zhangjing-desktop:~# ass_array=([index1]=val1 [index2]=val2)
root@zhangjing-desktop:~# echo ${ass_array[index1]}
val1
root@zhangjing-desktop:~# echo ${ass_array[index2]}
val2  
example:
      2)独立赋值
      ass_array[0]=val1

root@zhangjing-desktop:~# declare -A fruits_value                             

root@zhangjing-desktop:~# fruits_value=([apple]='100dollars' [orange]

='150dollars')
root@zhangjing-desktop:~# echo "Apple costs ${fruits_value[apple]}"           

Apple costs 100dollars
   3)列出数组索引
root@zhangjing-desktop:~# echo ${!array_var[*]}
0 1 2 3
root@zhangjing-desktop:~# echo ${!fruits_value[*]}
orange apple

2.别名
alias new_command='command sequence'
example:
root@zhangjing-desktop:/home/zhangjing# alias ip='ifconfig | grep "inet 地址"'
root@zhangjing-desktop:/home/zhangjing# ip
          inet 地址:192.168.1.81  广播:192.168.1.255  掩码:255.255.255.0
          inet 地址:127.0.0.1  掩码:255.0.0.0
这样设置只是暂时的,永久要放入~/.bashrc文件中
         echo alias ip='ifconfig | grep "inet 地址"' >> ~/.bashrc

3.获取设置日期和延时
 1)打印纪元时间
 date +%s
 2)将日期转换成纪元时间
 date --date"...." +%s
日期格式字符串列表
%A 星期几的全称(Sunday~Saturday)
%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Mon Nov 8 14:12:46 CST 1999)
%d 一个月的第几天(01~31)
%D 日期(mm/dd/yy)
%h 与%b选项等价
%j 一年的第几天(001~366)
%m 月(0~12)
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%x 显示日期的格式(mm/dd/yy)
%y 年的最后两个数字(2004则是04)
%Y 年(如1970,1996等)
example:
date "+%y-%b %d %H:%M:%S"
 3)设置日期和时间
 date -s "..."

4)将记原时间转换为本地时间

date  -d "$((1398085213 - `date '+%s'` )) sec" "+%Y-%-m-%-d %H:%M"
检查一组命令所花费的时间
#!/bin/bash
start=$(date +%s)
find / -name smb.conf

end=$(date +%s)
difference=$((end - start))
echo take $difference seconds

以循环方式执行
#!/bin/bash
echo -n count;
count=0;
while true;
do
if [ $count -lt 40 ];
then let count++;
sleep 1;
echo  $count
else exit 0;
fi
done

1.10调试脚本
使用-x,启动跟踪调试shell脚本---运行带有-x标志的脚本能打印出所执行的每一行命令以及当期状态
bash -x script.sh

只关注部分命令及参数的打印输出
set -x:在执行时显示参数和命令
set +x:禁止调试
root@zhangjing-desktop:/home/zhangjing# cat debug.sh
#!/bin/bash
for i in {1..6}
do
set -x
echo $i
set +x
done
echo "Script executed"

以自定义格式显示调试信息---传递_DEBUG环境变量来建立这类调试风格
root@zhangjing-desktop:/home/zhangjing# cat my_debug.sh
#!/bin/bash
function DEBUG()
{
[ "$_DEBUG" == "on" ] && $@ || : #如果_DEBUG等于on,执行$@,否者执行: ,在bash中命令“:”告诉shell不要做任何操作
}

for i in {1..10}
do
DEBUG echo $i
done

 

 

 


 

 

  

 
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值