1

I created this sh script and want to measure time spent on the program:

#!/bin/bash

start=`date +%s`

cd nlu/creator
python3 move_file.py  ../../../../../base_data/   ../../resources/kb/

python3 converter.py
python3 transformer.py

cd  ../../resources/kb/
find . -name '*.xml' | xargs  -I{} rm -rf {}
find . -name '*Object.txt' | xargs  -I{} rm -rf {}

end =`date +%s`
runtime=$((end-start))

echo "Building time: ${runtime}"

I execute:

nlu/creator/builder.sh

The error message is:

nlu/creator/builder.sh: line 15: end: command not found
Building time: -1651032434

why does it complain about 'end:command not found'?

Also, why is the time a negative number? I am on a Mac.

1
  • 1
    Remove the space in end =, ie make it end=. Commented Apr 27, 2022 at 4:20

1 Answer 1

4

why does it complain?

This is general shell script syntax:

In general, P X Y runs the command P with the two arguments X and Y. Similarily, end = something runs the command end with the two arguments = and something.

Assignment is done by VAR=VALUE, for instance

end=something

If you one day need to execute a command named end=something (i.e. not treat it as assignment), you still can do it by writing

'end=something'

BTW: If you are only interested in knowing the time and are not picky about a particular format of how the time is printed, you could also remove your timing calculation from the script completely, and run the script with the time builtin:

time nlu/creator/builder.sh

Give it a try!

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.