在bash中“切断”内容后分配变量

时间:2012-10-17 22:35:16

标签: linux bash

我正在使用bash迭代文件夹,但我需要剪切前面的路径。例如,如果我有'/ temp / test / filename',我想切断'/ temp / test /'并将文件名存储到变量中,这样我就可以写一个带有文件名的日志。

任何人都可以帮助我吗?问题是变量temp总是为空。

这是我的bash代码:

#!/bin/bash

for file in /temp/test/*
do
    if [[ ! -f "$file" ]]
    then
        continue
    fi

    temp="$file"|cut -d'/' -f3

    $file > /var/log/$temp$(date +%Y%m%d%H%M%S).log
done

exit

1 个答案:

答案 0 :(得分:1)

试试:

$ x=/temp/test/filename
$ echo ${x##*/}
filename

另一种解决方案是使用basename

$ basename /temp/test/filename
filename

第一个解决方案是parameter expansion,内置了bash,因此我们提高了性能。

您的第temp="$file"|cut -d'/' -f3行已损坏。

  • 如果要将命令的输出存储在变量中,则应执行var=$(command)
  • 您需要使用STDINhere-string)或<<<
  • 将值传递给命令的echo value | command

终于,如果您想使用cut

$ temp=$(cut -d/ -f4 <<< /temp/test/filename)
$ echo $temp
filename