我想使用外部工具构建并运行一个名为 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/\..*$//'