外部ツールを使用してdbgenというプログラムをビルドして実行したいと思います。私はこの変数がファイル名を保持していることを知ってdbgen.c
います
$GEDIT_CURRENT_DOCUMENT_NAME
.c
ここですべてのファイル名に使用できるようにその部分を削除するにはどうすればよいですか?
#!/bin/sh
make dbgen
./dbgen
また、存在するかどうかを確認する方法を知りたいです。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
[
あるいは、コマンドまたは組み込みコマンドを使用して、ファイル(makefileなど)がシェル(sh / bash / zsh)に存在するかどうかをテストできます[[
。
test -e some_file_name && echo exists
[ -e some_file_name ] && echo exists
[[ -e some_file_name ]] && echo exists
test(1)、bash(1)、またはzshbuildins(1)のマニュアルページを確認してください。
ファイルフラグを作成します。
あなたが言うのはこれです:
if [[ -e makefile ]]; then
make CFLAGS='-Wall -g' my_target
else
make my_target
fi
答え2
拡張機能を削除するには、次のようなものを使用してください。
echo $GEDIT_CURRENT_DOCUMENT_NAME | sed 's/\..*$//'