shell脚本进入指定文件夹下第一个或最后一个文件夹

问题描述

好基友突然问我:浩哥,怎么用shell脚本进入一个文件夹下已经排好序的所以文件夹里面,最后一个或者第一个文件夹???

比如,我/jack下面有demo、hhit、logs文件夹,我想通过lt排序,直接cd到第一个文件夹里面。
在这里插入图片描述

解决方案

新建一个cd.sh脚本,输入以下代码。

#!/bin/bash
# 顺序获取/jack下面所有的文件,=号左右两边不要有空格
dir=$(ls -lt /jack/ | awk '/^d/ {print $NF}')
# 循环每个文件
for i in $dir
do
    # 输出每个文件夹名,do里面不可为空,赋值语句也可。
    echo $i
done

# 将字符串转换成数组-根据空格
arr=(${dir//A/})
# 数组--输出数组最后一个元素
echo ${arr[${#arr[@]}-1]}
# 数组--进入第一个文件夹
cd ${arr[0]}


# for循环--进入最后一个文件夹
# cd $i

# for循环,或者数组用一个即可。

运行问题

直接使用./运行是不行的。
以这种方法执行脚本时,其中的命令是fork一个子shell线程执行的。
子shell线程继承了父shell的环境变量,
但无法修改他们,所做的修改仅对子shell有效。
在这里插入图片描述
这时候我们需要使用source
在这里插入图片描述

发布了172 篇原创文章 · 获赞 64 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/WeiHao0240/article/details/104314028