Возьмите вывод Grep и выберите части для переменных

Для rm нет ничего магического в >. Нужно только убедиться, что угловая скобка дойдет до нее (= интерпретировать оболочку, интерпретируя ее как перенаправление).

> "> option[value='2016']"  #create it
rm "> option[value='2016']" #remove it

#remove all files in the current directory that have > in them
rm -- {,.}*\>*                 

Если вы находитесь на разумной современной системе, вы должны быть в состоянии получить правильно экранированные имена с заполнением табуляции.

2
06.03.2018, 23:54
3 ответа

generalmente

Lo que funcionará en bashy en otros shells es establecer parámetros posicionales desde la salida de la tubería:

set -f -- $(kubectl get pods -o wide --all-namespaces | grep sonarqube- )

En este caso, ahora puede acceder a las variables como $1, $2, etc.

específico para bash

En bashes posible crear una variable de matriz, así:

var=( $(kubectl get pods -o wide --all-namespaces | grep sonarqube- ) )

El modismo es var=(... ), en este caso la salida de su tubería grep.

Luego puede acceder a los elementos de su matriz utilizando el formulario ${var[n]}, con ncomenzando en cero.

2
27.01.2020, 21:55

Con la función bash read:

read -r namespace deployment other < <(kubectl get pods -o wide --all-namespaces | grep sonarqube-)
kubectl cp <file> "${namespace}/${deployment}:/opt/app/extensions/plugins/"
3
27.01.2020, 21:55

En casos como este (con columnas de salida predecibles ), suelo buscar awk. Algo como esto podría ser útil:

kubectl get pods -o wide --all-namespaces | awk '/sonarqube-/ { cmd=sprintf("kubectl cp <file> %s/%s:/opt/app/extensions/plugins", $1, $2); print(cmd); system(cmd); }' 
0
27.01.2020, 21:55

Теги

Похожие вопросы