人生第一个shell脚本

用途

有时候,不知道什么原因,lib里面的各种so文件的链接会失效,导致依赖这些库的各种操作都会error,所以,需要能恢复链接。

代码

  • 读取当前目录下的文件,找到lib.*[0-9]$的文件,即lib开头,数字结尾的文件,认为这是链接文件。
  • 根据链接文件名,找到so文件。
  • 执行ln命令
#!/bin/bash

for file in $PWD/*; do
    if [ -f $file ] 
    then
        filename=$(basename $file)
        linkfile=$(ls $filename | grep lib.*[0-9]$)

        if [ "$linkfile" != "" ]
        then
            sofilehead=${linkfile%%.*}
            #echo $sofilehead

            for file2 in $PWD/*; do
                if [ -f $file2 ]
                then
                    filename2=$(basename $file2)
                    sofile=$(ls $filename2 | grep ${sofilehead}-.*so$)
                    if [ "$sofile" != "" ]
                    then
                        #echo $sofile      
                        echo "ln -s -f $sofile $linkfile"
                        ln -s -f $sofile $linkfile
                    fi
                fi
            done
        fi
    fi
done

感想

  1. shell绝对是程序员的真爱。
  2. 第一次写的感受:特别注意空格,各种细节,都会导致出不了预想的结果。
  3. 我爱shell脚本。

改进

  1. 链接文件和源文件的关系,如果仅仅从名字上来寻找,这样的方法,鲁棒性太差了。,
  2. 要从cat的输出找到源文件。下次再遇到这个问题,从这里改进。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值