[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bash: testing a variable



I'd like to check two things:

* Whether a given path is not already in the $PATH variable

* Whether the given path already exists

If both are true, I'd like to add the given path to the $PATH variable.

I can add the given path, and test for the existence of the given path.
I can write expressions that work to detect the given path in $PATH.
What I don't seem able to do is combine all that in a script.

Here's what I have for the script:

#!/bin/bash

# A short script for testing some code.

# pelican seems to like local installations here.
SUBSTR="${HOME}"/\.local/bin/
echo Substr is "${SUBSTR}"
# if [[ ! ${PATH} =~ .*/home/charles/.local/bin.* ]] ; then
if [[ $( echo "$PATH" | grep -E -v "${SUBSTR}" ) ]] ; then
    echo Substring NOT found.;

    if [ -d "${HOME}/.local/bin/" ] ; then
        echo Adding to \$PATH
        PATH=${HOME}/.local/bin:$PATH
    fi
else
    echo Substring found!;
fi

I call the script with the . operator: ". test.sh"

Why do I always end up adding the given path, even if it is already in
$PATH?

Debian is Buster, bash is 5.0.3(1)-release (x86_64-pc-linux-gnu).

-- 
Does anybody read signatures any more?

https://charlescurley.com
https://charlescurley.com/blog/


Reply to: