bash - trim off the last 4 characters

 
0
 

I'M wanting to write my own command/script for compiling my c++ files. I use g++ -g -Wall filename.cpp -o filename

I'M trying to figure out how I can trip of the last four characters (.cpp) from a string. Any ideas?

Featured Replies in this Discussion

  • Take a look at the ... command, which is made specifically for this kind of thing. Just create a ... in the same directory as the source file(s). You can even try this without a ... and ... will compile the file based on the defaults. ... To use this Makefile to generate MyPrg, run the ... command. ... This will use the first rule to make MyPrg from the given source file. If MyPrg.cpp…
    Post Contains: Code
  • hi, ... or ...
    Post Contains: Code
 
1
 

Take a look at the make command, which is made specifically for this kind of thing. Just create a Makefile in the same directory as the source file(s). You can even try this without a Makefile and make MyPrg will compile the file based on the defaults.

#Makefile
MyPrg:
        g++ -O3 -Wall MyPrg.cpp -o MyPrg
        strip MyPrg

debug:  MyPrg.cpp
        g++ -g -Wall MyPrg.cpp -o MyPrg
        touch debug

clean:
        -rm debug MyPrg

To use this Makefile to generate MyPrg, run the make command.
~/src/cpp/MyPrg> make
This will use the first rule to make MyPrg from the given source file. If MyPrg.cpp changes, then calling make will recompile MyPrg.
~/src/cpp/MyPrg> make debug
This will use the debug: rule to create MyPrg to make that version of the program.
~/src/cpp/MyPrg> make clean
This will remove the files generated using this Makefile.

 
0
 

I was trying to avoid hard coding MyPrg.cpp and MyPrg. I was going to use ${1} for command line arguments. So I would simply type "compile MyPrg.cpp" and my script would run g++ -g -Wall ${1} -o ${1 - last 4 characters}

 
2
 

hi,

v="myFile.cpp"
((${#v}>4)) && echo "${v:: -4}"

or

v="myFile.cpp"
echo "${v%.cpp}"
Comments
I like the second version better. This is a good solution for this question.
Question Answered as of 2 Years Ago by Nutster and Watael
 
0
 

Also, check out the basename command

You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article