【问题标题】:Incrementing variable in Bash -sed command在 Bash -sed 命令中递增变量
【发布时间】:2016-12-23 15:30:07
【问题描述】:

我有一个 bash 脚本,我正在尝试将它放在一起,它会查找文件夹中的所有图像,然后将这些文件的名称放入预先格式化的 CSV 文件中。实际上,我已经弄清楚了其中更复杂的部分并且运行良好......我被困在一个非常基本的部分。我有一个变量,我需要为找到的每个文件增加一个变量,够简单吧?我已经尝试了很多不同的东西,但我一生都无法让它增加。这是我正在使用的脚本:

已编辑以显示更少的上下文

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 来增加它,并将美元符号放在 i 变量的不同迭代之前......似乎没有任何东西实际上增加了变量。我最好的猜测是这不是一个真正的循环,所以它不会保存对变量的更改?任何指导将不胜感激!

【问题讨论】:

  • 请通过减少它以仅显示问题而不是它周围的所有上下文来使您的示例更简洁。
  • 对不起,我对 Bash 真的不是很熟悉,我不想删掉相关的部分,我想我现在已经把它删减到你会看到的部分我正在努力解决的问题,但没有过多了解发生这种情况的背景。

标签: bash awk sed auto-increment


【解决方案1】:

$((++i)) 由您的 shell 执行。但是 shell 只执行一次这一行。这条线无法满足您的需求。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2017-12-15
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    相关资源
    最近更新 更多