gpt4 book ai didi

linux - Bash 脚本 cd 问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:39:13 25 4
gpt4 key购买 nike

大家好,我的脚本有一些问题。我读到从脚本中更改当前目录是一个问题。基本上我正在寻找一个包含项目文件夹和其中任何子文件夹的 php 文件。我想将目录更改为该文件夹所在的位置并为其执行命令。到目前为止还没有运气。

function findPHP(){
declare -a FILES
FILES=$(find ./ -name \*.php)
for file in "${FILES[@]}"
do

DIR=`dirname file`
( cd $DIR && doSomethingInThisDir &(...))

done

任何帮助将不胜感激。

最佳答案

您正在尝试将 FILES 作为数组进行迭代,但它只有一个元素。为了将子 shell 的结果放入数组中,您可以:

FILES=($(find ./ -name \*.php))

请注意,它会按空格分割文件名,因此即使您在下面正确引用,它也无济于事。或者,您可以让它在下面拆分(即使用现有的FILES)并使用:

for file in $FILES

如果您使用的是 bash 4,您可能想看看递归通配符...这会让事情变得更容易:

for file in **/*.php

请注意,您必须设置 globstar shell 选项,可以使用 shopt -s globstar 启用该选项。这种方式更简单,并且不会因空格而中断。

此外,您可能需要这里的 $file:

DIR=`dirname $file`

或者只使用参数扩展:

DIR=${file%/*}

关于linux - Bash 脚本 cd 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11521729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com