我正在使用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
答案 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)
STDIN
(here-string
)或<<<
echo value | command
终于,如果您想使用cut
:
$ temp=$(cut -d/ -f4 <<< /temp/test/filename)
$ echo $temp
filename