![도구 창:](https://linux55.com/image/64284/%EB%8F%84%EA%B5%AC%20%EC%B0%BD%3A.png)
외부 도구를 사용하여 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/\..*$//'