gpt4 book ai didi

linux - bash中内容为 'cut'后赋值一个变量

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:29 26 4
gpt4 key购买 nike

我正在使用 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

最佳答案

试试看:

$ 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

关于linux - bash中内容为 'cut'后赋值一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com