2016-08-17 275 views
1

我有一个bash脚本,我试图将所有图像放在一个文件夹中,然后将这些文件的名称放入预格式化的CSV中。我其实有更复杂的部分,并且工作得很好......我被困在一个非常基本的部分。我有一个变量,我需要增加每个找到的文件,很简单吧?我已经尝试了一堆不同的东西,不能为了我的生活而让它增加。这里是我正在使用的脚本:在Bash -sed命令中递增变量

编辑,以显示较少的情况下

i=0 
find "$(pwd)" -maxdepth 1 -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}' | grep -o -E '[^/]*$' | sed -e "s/^/$((++i))/" > "$(pwd)/inventory-$(date +%Y%m%d)-$(date +%I%M).csv" 

我试着i++递增它,i=+1i=i+1以及把美元符号的不同迭代前我变量...似乎没有什么实际增加变量。我最好的猜测是,这不是一个真正的循环,所以它不会保存变量的变化?任何指导将不胜感激!

+2

请将您的示例缩小为仅显示问题而不是其周围的所有上下文,以使您的示例更加简单。 – merlin2011

+0

对不起,我真的不是非常熟悉Bash,我不想剪掉那些相关的部分,我想我现在已经把它切下来,直到你将看到我正在努力的部分,而没有在这种情况发生的地方取得了太多的内容。 – techiechic

回答

0

$((++i))由您的shell执行。但是shell只执行一次该行。这条线不能做你需要的。

我会在awk的内部递增,将其与文件名一起打印出来,然后将输出合并到其他命令中。