我想拥有一个可以在命令行中调用的函数,该函数需要以下内容:
$ command_name /some/path/file.java
并变成以下呼叫:
command /some/path:file
基本上,我遇到的问题是用:
代替最后一个/
并去除文件扩展名。
答案 0 :(得分:0)
不清楚您要问的是什么。您要使用bash function
还是bash script
?使用命令basename
和dirname
可以轻松完成路径和文件的分割。
例如:
$ dirname /path/to/file.txt
/path/to
$ basename /path/to/file.txt
file.txt
但是如果您必须使用正则表达式进行操作,sed
的效果很好:
$ echo /path/to/file.txt | sed "s/.*\///"
file.txt
$ echo /path/to/file.txt | sed -r "s/(.+)\/.+/\1/"
/path/to
首先是一个脚本:
#! /usr/bin/env bash
COMMAND="/bin/echo"
JAVA="$1"
path=`dirname "$JAVA"`
file=`basename "$JAVA"`
exec "$COMMAND" "$path:$file"
现在是一个函数:
fnA()
{
COMMAND="$1"
JAVA="$2"
path=`dirname "$JAVA"`
file=`basename "$JAVA"`
exec "$COMMAND" "$path:$file"
}
答案 1 :(得分:0)
假定原始路径字符串,
/some/path/file.java
以$ 1传递到脚本,您将修改后的字符串作为
path_string_with_colon=$(dirname $1):$(basename $1 .java)