Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash将前导零添加到计数,而不是数字_Bash_Numbers_Padding_Zero_Digits - Fatal编程技术网

bash将前导零添加到计数,而不是数字

bash将前导零添加到计数,而不是数字,bash,numbers,padding,zero,digits,Bash,Numbers,Padding,Zero,Digits,我使用初始计数进行bash-while循环。 我想将%03d三位数字添加到计数中,以便输出如下: folder001 folder002 我的代码是: #!/bin/bash input_file=$1 csv_file=$2 count=1 while IFS= read -r line || [[ -n "$line" ]]; do input_dir="./res/folder"%03d"$count/input" ou

我使用初始计数进行bash-while循环。 我想将
%03d
三位数字添加到计数中,以便输出如下:

folder001
folder002
我的代码是:

    #!/bin/bash

    input_file=$1
    csv_file=$2

    count=1
    while IFS= read -r line || [[ -n "$line" ]]; do
      input_dir="./res/folder"%03d"$count/input"
      output_dir="./res/folder"%03d"$count/output"
      results_dir="./res/all_results_png/png"

      mkdir -p "$input_dir" "$output_dir"
      printf '%s\n' "$line" > "$input_dir/myline.csv"
      find $output_dir -name image_"folder$count*".png -exec cp {} $results_dir \;

      ((count++))
    done < "$csv_file"

如何在find命令中反映三位数的更改?

您需要使用
printf
获得格式化输出。替换
内的前两行,同时将
行替换为此:

printf -v input_dir './res/folder%03d/input' $count
printf -v output_dir '/res/folder%03d/output' $count
如果
count=3
,则上述两行实际上是:

input_dir="./res/folder003/input"
output_dir="./res/folder003/output"

您可以使用
printf
来实现这一点。下面是一个例子:

AMD$ cat File.sh
#!/bin/bash

count=25
input_dir=$(printf "/res/folder%03d/input" $count)
echo $input_dir

AMD$ ./File.sh
/res/folder025/input
对于问题中的更新,您可以执行相同的逻辑

filename=$(printf "image_folder%03d" $count)
find . -name "$filename.png"
就你而言:

find $output_dir -name "$filename.png" -exec cp {} $results_dir \;

然后我的变量没有被解析。。。当我以后使用这些变量时,引用不清楚。。。缺少。在这些
printf
命令之后,使用
declare-p input\u dir output\u dir
命令检查变量,并查看它打印的内容。您希望实现什么?询问是因为您正在创建
$output\u dir
但没有使用它(它仍然是一个空dir)。@jm666我正在运行一些我忽略的其他脚本…谢谢,这是有效的,但是我添加了一个更新,它正在尝试查找具有相同模式的文件,但我们再次需要那些三位数模式。我怎么做?你能更新你的答案吗?谢谢
find $output_dir -name "$filename.png" -exec cp {} $results_dir \;