我将递归运行数据的基本目录,然后修改其中的每个文件,并在另一个基本目录上创建一个新文件。所以我需要两个参数,一个是原始数据库目录的路径,另一个是用于放入新文件的基础目录,但是我的代码有问题。当我将这两个参数放在主函数下时,而不是在终端上输入它们。希望有人能帮助我。为什么这个bash脚本不能递归运行?
以下是我的代码:
function traverse() {
for file in $(ls "${data_path}")
do
echo "in file: ${data_path}/${file}"
if [[ ! -d ${data_path}/${file} ]]; then
if [[ ${data_path}/${file} == *.nii.gz ]];then
echo "is nifti: ${data_path}/${file} "
else
echo "not file"
echo ${data_path}
temp_path=${data_path/'/data2/Projects/Incoming_monkey'/}
new_path="${new_destination}/${temp_path}"
mkdir -p ${new_path}
echo ${new_path}
fi
else
echo "entering recursion with: ${data_path}/${file}"
traverse "${data_path}/${file}" "${new_destination}"
fi
done
}
function main() {
echo "main start"
data_path=/data2/Projects/Incoming_monkey/MAJOM/08_20170706/func
new_destination=/data2/Projects/reorientation
traverse "${data_path}" "${new_destination}"
}
main
用四个空格前缀代码/数据。请看[编辑帮助](http://stackoverflow.com/editing-help)。 – Cyrus
全局变量有种挫败递归的思想。 –