도구 창:

도구 창:

외부 도구를 사용하여 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/\..*$//'

관련 정보