de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 John
John
Question

Jak ustawić zmienną na wyjście polecenia w Bashu?

Mam dość prosty skrypt, który jest czymś takim jak poniższe:

#!/bin/bash

VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'

echo $MOREF

Kiedy uruchamiam ten skrypt z linii poleceń i przekazuję mu argumenty, nie otrzymuję żadnych danych wyjściowych. Jednakże, kiedy uruchamiam komendy zawarte w zmiennej $MOREF, jestem w stanie uzyskać dane wyjściowe.

Jak można pobrać wyniki komendy, która ma być uruchomiona w skrypcie, zapisać je do zmiennej, a następnie wyświetlić tę zmienną na ekranie?

1497 2011-01-10T20:58:02+00:00 3
Peter Mortensen
Peter Mortensen
Edytowane pytanie 11. kwietnia 2019 в 11:54
Programowanie
command-line
shell
bash
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
Andy Lester
Andy Lester
10. stycznia 2011 в 9:04
2011-01-10T21:04:18+00:00
Więcej
Źródło
Edytuj
#11649979

Oprócz backticków command możesz użyć $(command) lub "$(command)", które uważam za łatwiejsze do odczytania i pozwalające na zagnieżdżanie.

OUTPUT="$(ls -1)"
echo "${OUTPUT}"

MULTILINE=$(ls \
   -1)
echo "${MULTILINE}"

Cytowanie (") ma znaczenie dla zachowania wartości wielowierszowych.

Bob Stein
Bob Stein
Edytowana odpowiedź 27. maja 2019 в 4:29
2186
0
Ilya Kogan
Ilya Kogan
10. stycznia 2011 в 9:00
2011-01-10T21:00:27+00:00
Więcej
Źródło
Edytuj
#11649978

Właściwy sposób to

$(sudo run command)

Jeśli zamierzasz użyć apostrofu, potrzebujesz ``, a nie `'. Ten znak jest nazywany "backticks" (lub "grave accent").

Na przykład tak:

#!/bin/bash

VAR1="$1"
VAR2="$2"

MOREF=`sudo run command against "$VAR1" | grep name | cut -c7-`

echo "$MOREF"
Peter Mortensen
Peter Mortensen
Edytowana odpowiedź 11. kwietnia 2019 в 12:04
263
0
 DigitalRoss
DigitalRoss
10. stycznia 2011 в 9:07
2011-01-10T21:07:40+00:00
Więcej
Źródło
Edytuj
#11649980

Tylko po to, żeby być innym:

MOREF=$(sudo run command against $VAR1 | grep name | cut -c7-)
26
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
Zuxriddin Muydinov
Zarejestrowany 11 godzin temu
2
Денис Анненский
Zarejestrowany 2 dni temu
3
365
Zarejestrowany 1 tydzień temu
4
True Image
Zarejestrowany 1 tydzień temu
5
archana agarwal
Zarejestrowany 1 tydzień temu
BG
DE
EL
ES
FR
ID
IT
JA
KO
LT
NL
PL
PT
RU
SL
TR
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem