相关疑难解决方法(0)

如何使用Bash迭代目录中的文件?

我需要编写一个脚本,用不同的参数启动我的程序,但我是Bash的新手.我这样开始我的程序:

./MyProgram.exe Data/data1.txt [Logs/data1_Log.txt].

这是我想要做的伪代码:

for each filename in /Data do
  for int i = 0, i = 3, i++
    ./MyProgram.exe Data/filename.txt Logs/filename_Log{i}.txt
  end for
end for
Run Code Online (Sandbox Code Playgroud)

所以我真的很困惑如何从第一个创建第二个参数,所以它看起来像dataABCD_Log1.txt并启动我的程序.非常感谢帮助.

PS我知道那里有类似的问题,但我没有发现创建我的日志文件名称.

bash filenames for-loop glob

515
推荐指数
5
解决办法
69万
查看次数

如何获取目录中的所有文件?

为什么这不起作用?

find . -maxdepth 1 -type f -print0 | xargs -0 .
Run Code Online (Sandbox Code Playgroud)

我得到的只是xargs: .: Permission denied.

bash

8
推荐指数
1
解决办法
4276
查看次数

如何从另一个脚本的文件夹中获取多个 bash 脚本,以便我可以使用这两个脚本中的函数?

我的目录中有run.sh脚本。我还有两个名为d1.shd2.sh的脚本,位于其名为deep的子目录中。我想在 run.sh 脚本中获取 d1.sh 和 d2.sh ,因此我可以使用d2.sh中存储的“test”函数。

run.sh的代码如下所示:

#!/bin/bash

source ./deep/*

test
Run Code Online (Sandbox Code Playgroud)

d1.sh

#!/bin/bash

echo -e "d1 is loaded"
Run Code Online (Sandbox Code Playgroud)

d2.sh

#!/bin/bash

echo -e "d2 is loaded"

test() {
    echo -e "test passed!"
}
Run Code Online (Sandbox Code Playgroud)

我使用以下命令执行run.sh

bash run.sh
Run Code Online (Sandbox Code Playgroud)

我得到输出:

d1 is loaded
Run Code Online (Sandbox Code Playgroud)

所以看起来d1.sh脚本正在加载,但d2.sh没有加载。我的问题是,为什么会发生这种情况以及我应该如何加载存储在./deep文件夹中的所有脚本?

linux bash shell scripting

3
推荐指数
1
解决办法
2094
查看次数

标签 统计

bash ×3

filenames ×1

for-loop ×1

glob ×1

linux ×1

scripting ×1

shell ×1