GNU/Linux >> Tutoriales Linux >  >> Linux

Iterar sobre la variable $ PATH usando el script de shell

Puedes usar read con delimitador establecido como :

while read -d ':' p; do
   echo "$p"
done <<< "$PATH:"

La forma más sencilla es probablemente cambiar IFS a dos puntos y deja que la palabra dividir lo haga:

IFS=:
for p in $PATH ; do 
    echo "$p"
done

Pero eso podría desencadenar la acumulación de nombres de archivo, en el extraño caso de que su PATH contenía caracteres como *?[] . Necesitarías usar set -f para evitar eso.

Aunque cambiando IFS podría considerarse problemático de todos modos, ya que afecta al resto del script. Entonces, en Bash, podríamos simplemente dividir las rutas a una matriz con read -a , esto tampoco tiene problema con los caracteres globales:

IFS=: read -a paths <<< "$PATH"
for p in "${paths[@]}" ; do
    echo "$p"
done

con eco:

echo "${PATH//:/$'\n'}"

sed:

sed 's/:/\n/g' <<< "$PATH"

tr:

tr ':' '\n' <<< "$PATH"

pitón:

python -c "import os; print os.environ['PATH'].replace(':', '\n')"

para iterar uso para:

for i in ${PATH//:/ }; do echo $i; done

Linux
  1. ¿Comportamiento inesperado de un script de Shell?

  2. ¿La secuencia de comandos de Shell se bloquea en el comando de correo?

  3. ¿División básica usando variable y entero?

  4. ¿Cómo obtener el nombre de la rama git actual en una variable en un script de Shell?

  5. Envío de correo HTML usando un script de shell

Cómo configurar su variable $PATH en Linux

Cómo almacenar un comando de Linux como una variable en el script de Shell

Conexión a WiFi usando adb shell

Iterar sobre líneas en lugar de palabras en un bucle for de script de shell

Biblioteca de salida de scripts de shell de colores

Obtenga la dirección MAC usando un script de shell