Linux 如何从顺序输入文件派生输出文件名?
我获得了一系列程序文件,如下所示:Linux 如何从顺序输入文件派生输出文件名?,linux,bash,unix,filenames,Linux,Bash,Unix,Filenames,我获得了一系列程序文件,如下所示: /work/xiaofenglu/science/myten.*.dump.gz 现在,我需要提取字符串myten.*作为顺序输出文件的基本名称。 我使用以下命令来处理此问题: for inputfile in *.dump.gz do base_name='basename ${inputfile} .dump.gz' done 但是,它不起作用。使用: 您的命令不起作用,因为您甚至没有调用命令basename。您只是将字符串base\u nam
/work/xiaofenglu/science/myten.*.dump.gz
现在,我需要提取字符串myten.*
作为顺序输出文件的基本名称。
我使用以下命令来处理此问题:
for inputfile in *.dump.gz
do
base_name='basename ${inputfile} .dump.gz'
done
但是,它不起作用。使用:
您的命令不起作用,因为您甚至没有调用命令
basename
。您只是将字符串base\u name
定义为逐字字符串
因为单引号。也许你在某处看到了这个命令:
base_name=`basename ${inputfile} .dump.gz`
你把反勾号和单引号混为一谈了。如果使用反勾号而不是单引号,则该命令可以工作。但最好使用$(…)
结构,而不是反勾号:
base_name=$(basename "$inputfile" .dump.gz)
这被称为一个
但是我要说的是,调用外部进程
basename
来执行Bash自己可以做得很好的事情是没有用的。我不知道如何在帖子中加上一个反勾号。。。有可能吗?单bck引号:`是的,只需用一个反斜杠转义。@Sheller:谢谢……但它不是“代码”格式……它已经比没有好了。:)。
base_name=`basename ${inputfile} .dump.gz`
base_name=$(basename "$inputfile" .dump.gz)