2016-11-11 42 views

回答

0

的“Surf9B.mp4”和STOR你可以尝试这样的事情,但你的名字不能在其中包含“/”。

SOME_VAR=$(echo "/home/streaming/demo/youtube/Surf9B.mp4" | rev | cut -f1 -d'/' | rev) 
echo $SOME_VAR 
+0

您正在运行...让我们来看看,'$()'叉一个子进程,然后'rev','cut',第二'rev'也是额外的外部工具..所以共有*四个*新程序,只是做一些bash可以做的内置?! –

+1

'filename =/home/streaming/demo/youtube/Surf9B.mp4; echo“$ {filename ## * /}”' –

+0

...此外,'rev'不是POSIX的一部分,是bash的一部分,甚至是Linux Standards Base的一部分,所以不保证它会被安装在任何给定的系统。 –

0
$ basename /home/streaming/demo/youtube/Surf9B.mp4 
Surf9B.mp4 

$ file=`basename /home/streaming/demo/youtube/Surf9B.mp4` 
$ echo "$file" 
Surf9B.mp4 
+1

考虑在示例中使用小写变量名称。 POSIX指定用于对shell和系统实用程序有意义的变量的全大写名称,并指定至少包含一个小写字符的名称空间,以供应用程序使用。请参阅http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html(关于环境变量)的第四段,但命名空间约定也适用于shell变量,因为使用与环境变量重叠的名称设置shell变量当时定义的将覆盖后者)。 –

+0

另请考虑引用您的扩展。 'echo'$ file''比'echo $ file'安全:没有使用引号,如果文件名包含IFS中的任何字符,它们将被空格替换;如果文件名可以被解释为一个glob,它将被扩展结果替换(如果没有结果存在严重依赖shell选项配置:'failglob'和'nullglob'都适用)。 –

相关问题