The usual way is to use a pipe: find . -name ‘*.jpg’ | while read f do; some_command "$f" done There are two problems here. First, this won’t work if paths have spaces or other blank characters in them. Second,… Read More
How to iterate an array in Bash?
Here you go: myarray[0]="this is a test" myarray[1]="this is another test" for i in "${myarray[@]}"; do echo "Value: $i" done Don’t forget the quotes around the ${myarray[0]}, or the spaces will separate each word on its own item. I work… Read More
How to trim leading and trailing characters in Bash?
Bash has built-in facilities to trim characters at the beginning and end of the value of a variable: $ myvar="AAAthis is a testAAA" $ echo ${myvar##*(A)} this is a testAAA $ echo ${myvar%%*(A)} AAAthis is a test I work as… Read More
How to use `find` to search for files based on modification time?
To find the files older than 17 days: $ find . -daystart -mtime +17 -print The reason to use `-daystart` is to make things more natural for human beings, because `find` performs some rounding; from the man page: When find… Read More
How to have a dynamic variable name in bash?
Code snippet below: myvar=something varname=myvar echo ${!varname} I work as a freelancer, so if you don’t want to do that kind of things yourself or don’t have the time, just drop me a line to hire me.
How to perform a lock/mutex in bash?
This can be done using the `ln` command: tempfile=$(mktemp ./lock.XXXXXX) lockfile=./lockfile trap "rm $lockfile" EXIT try=1 while ! ln $tempfile $lockfile > /dev/null 2>&1; do try=$[ $try + 1 ] if [[ $try -gt 10 ]]; then echo "ERROR: Timeout… Read More
How to test that an environment variable is set in Bash?
Use this: ${THEVAR:+x} Which will expand to “x” if THEVAR is set and not empty. Alternatively, this test can be used: if [[ ! -v THEVAR ]]; then echo "THEVAR is not set" fi But that will work even if… Read More