[问题]怎么取文件名,后缀前边的串 ?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15
送出感谢: 0
接收感谢: 0

[问题]怎么取文件名,后缀前边的串 ?

#1

帖子 iblicf » 2007-07-25 21:11

想写个处理latex文件的脚本... 类似:

代码: 全选

#!/bin/bash
E_BADARGS=65        # Missing command-line arg.
if [ -z "$1" ]      # Check for (required) command-line arg.
then
  echo "Usage: $0 <tex_filename>"
  exit $E_BADARGS
fi

#deal suffix-----------------------

if [ -f "$1" ]
then
  latex $1 && dvipdfmx "$1.dvi" && evince "$1.pdf"
else
  echo "Invalid file_name !"
fi
latex 处理 ( foo/foo.txt/foo.tex/foo.xxx )这样的文件名都生成 foo.dvi..如果不带后缀的文件名,上边的命令可用,如果带后缀 。。。所以,怎么取文件名 "foo"(后缀前边的字符,或者没后缀的)? 谢谢
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15
送出感谢: 0
接收感谢: 0

#2

帖子 iblicf » 2007-07-25 22:54

OK :)

代码: 全选

#!/bin/bash
E_BADARGS=65        # Missing command-line arg.

if [ -z "$1" ]      # Check for (required) command-line arg.
then
  echo "Usage: $0 <tex_filename>"
  exit $E_BADARGS
fi

#dealwith suffix
fname=$1
fname=${fname%.*}

if [ -f "$1" ]
then
  latex $1 && dvipdfmx "$fname.dvi" && evince "$fname.pdf"
else
  echo "Invalid file_name !"
fi
上次由 iblicf 在 2007-07-26 13:38,总共编辑 1 次。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#3

帖子 eexpress » 2007-07-26 12:51

如果是tar.gz。你不死了。呵呵。

%和%%不同的。试试。 :lol:
● 鸣学
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15
送出感谢: 0
接收感谢: 0

#4

帖子 iblicf » 2007-07-26 13:31

不会阿,,就是要取最后一个点前边的.. :)
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#5

帖子 eexpress » 2007-07-26 13:36

是啊。我就说,你取得的不一定是文件名啊。比如 libpig.tar.gz这样的。你难道取libpig.tar作文件名啊。
● 鸣学
头像
iblicf
帖子: 3766
注册时间: 2007-01-15 17:15
送出感谢: 0
接收感谢: 0

#6

帖子 iblicf » 2007-07-26 13:40

没错,,因为latex 处理( libpig.tar.gz )出来的文件名就是 libpig.tar.dvi
回复

回到 “Shell脚本”