在for循环中仅获取变量中的文件名
Get only file name in variable in a for loop
我有一个用于在文件中写入文本的 for 循环:
for f in $DATA_DIRECTORY
do
echo ' input.'$f '{'
echo ' copy = ${source.copy}"'$f'.CPY"'
echo ' data = ${source.data}"'$f'.CSV"'
echo ' }'
done
但是这里的“f”变量看起来像这样:
/path/to/my/file/FILE.TXT
我要获取的只是文件名,不是完整路径和扩展名:
FILE
顺便说一下,我试图像这样更改我的 f 变量,所以我没有得到扩展名,但它没有用:
{$f%%.*}
你需要两行;不允许链式运算符。
f=${f##*/} # Strip the directory
f=${f%%.*} # Strip the extensions
或者,您可以使用 basename
命令在一行中删除目录和一个扩展名(假设您知道它是什么)。
f=$(basename "$f" .txt)
我有一个用于在文件中写入文本的 for 循环:
for f in $DATA_DIRECTORY
do
echo ' input.'$f '{'
echo ' copy = ${source.copy}"'$f'.CPY"'
echo ' data = ${source.data}"'$f'.CSV"'
echo ' }'
done
但是这里的“f”变量看起来像这样:
/path/to/my/file/FILE.TXT
我要获取的只是文件名,不是完整路径和扩展名:
FILE
顺便说一下,我试图像这样更改我的 f 变量,所以我没有得到扩展名,但它没有用:
{$f%%.*}
你需要两行;不允许链式运算符。
f=${f##*/} # Strip the directory
f=${f%%.*} # Strip the extensions
或者,您可以使用 basename
命令在一行中删除目录和一个扩展名(假设您知道它是什么)。
f=$(basename "$f" .txt)