Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 获取部分文件名_Bash_Variables_Parameter Expansion - Fatal编程技术网

Bash 获取部分文件名

Bash 获取部分文件名,bash,variables,parameter-expansion,Bash,Variables,Parameter Expansion,我尝试只使用一个bash变量来获取文件num23.txt的编号 User@User-MacBook-Pro:~$ f=num23.txt User@User-MacBook-Pro:~$ echo $f num23.txt User@User-MacBook-Pro:~$ echo ${f%.txt} num23 User@User-MacBook-Pro:~$ echo ${f/num} 23.txt User@User-MacBook-Pro:~$ echo ${f/num%.txt} nu

我尝试只使用一个bash变量来获取文件
num23.txt
的编号

User@User-MacBook-Pro:~$ f=num23.txt
User@User-MacBook-Pro:~$ echo $f
num23.txt
User@User-MacBook-Pro:~$ echo ${f%.txt}
num23
User@User-MacBook-Pro:~$ echo ${f/num}
23.txt
User@User-MacBook-Pro:~$ echo ${f/num%.txt}
num23.txt
User@User-MacBook-Pro:~$

我尝试只使用
%
/
运算符。它如何更改最后一个命令以仅作为输出获取
23

获取数字

对于您的特定示例(当只有一个子字符串只有数字时):

获取前缀和后缀之间的字符串

但是,如果要指定该字符串的后缀和前缀,可以选择以下选项:

echo `basename ${f/num} .txt`
因为
echo${f/num%.txt}
不能正常工作,而且Bash不允许您运行类似这样的
echo${{f/num}%.txt}

echo ${f//[^[:digit:]]/}
echo `basename ${f/num} .txt`