工具窗口:

工具窗口:

我想使用外部工具构建并运行一个名为 dbgen 的程序。我知道这个变量保存文件名dbgen.c‍‍‍‍‍‍‍‍‍‍‍‍ :

$GEDIT_CURRENT_DOCUMENT_NAME

如何删除该.c部分以便我可以在此处将其用于任何文件名:

#!/bin/sh
make dbgen
./dbgen

另外,我想知道如何检查 a 是否makefile存在,如果不存在,则使用一些默认标志gcc,例如CFLAGS=-Wall -g

工具窗口:

在此输入图像描述

答案1

删除扩展名:

尝试使用${varname%.ext}sh/bash/zsh的扩展。例如这样:

#!/bin/sh
# ...
file_name_with_out_ext="${GEDIT_CURRENT_DOCUMENT_NAME%.c}"

(但请注意,这只会删除 .c 扩展名并保留 .h 或 .cpp 或任何其他扩展名)

测试文件是否存在:

test您可以使用or[命令或内置命令测试 shell (sh/bash/zsh) 中是否存在文件(例如 makefile)[[

test -e some_file_name && echo exists
[ -e some_file_name ] && echo exists
[[ -e some_file_name ]] && echo exists

请务必检查 test(1)、bash(1) 或 zshbuiltins(1) 的手册页。

制作文件标志:

你的意思是这样的吗:

if [[ -e makefile ]]; then 
  make CFLAGS='-Wall -g' my_target
else
  make my_target
fi

答案2

要删除扩展程序,请使用类似以下内容-

echo $GEDIT_CURRENT_DOCUMENT_NAME | sed 's/\..*$//'

相关内容