Puncte:1

ieșirea comenzii „care” într-o variabilă nu funcționează

drapel cg

Sunt doar un începător la scripting bash. Am încercat să salvez rezultatul de la comanda „care” într-o variabilă și să o imprimez, dar variabila nu arată nimic. Acesta este codul pe care l-am încercat:

#!/bin/bash
OUTPUT="$(care buclă)"
echo „${OUTPUT}”

Ieșire:

utilizator@utilizator:~$ bash new.sh

utilizator@utilizator:~$

De asemenea, funcționează când îl rulez în terminal.

utilizator@utilizator:~$ OUTPUT="$(care buclă)"
echo „${OUTPUT}”

bucla nu a fost găsită
utilizator@utilizator:~$

Dar lucrul este că funcționează cu alte comenzi.

#!/bin/bash
OUTPUT="$(data)"
echo „${OUTPUT}”

Ieșire:

utilizator@utilizator:~$ bash new.sh
Sâmbătă, 07 august 2021 13:41:37 +0545
utilizator@utilizator:~$
bac0n avatar
drapel cn
Încă puțin curios, faptul că mesajul de eroare pe care l-ați introdus nu poate proveni de la „care”, nu ar trebui să dea deloc mesaj dacă, de exemplu, curl nu există?
Sammy1410 avatar
drapel cg
Ei bine, rezultatul a fost „curl " atunci când este găsit și a dat "curl not found" dacă nu este instalat. Dar ultima ieșire este văzută numai în terminal, dar nu în timpul utilizării variabilelor shell.
bac0n avatar
drapel cn
dacă curl nu este instalat, adică dacă binarul nu există, nu ar trebui să imprime deloc niciun mesaj. Puteți deschide `care` într-un editor de text, este un script shell foarte simplu, mesajul „curl not found” trebuie să vină din altă parte. (și dacă curl există, ar trebui să returneze calea, nu `curl` )
Sammy1410 avatar
drapel cg
Da pare.Aceasta a fost doar mica bucată de cod pe care încercam să o introduc în declarația if. Ei bine, am găsit ```care comandă``` returnează date booleene pe care le-aș putea folosi. Mulțumesc pentru ajutor. În cele din urmă, codul meu rulează conform așteptărilor.
Sammy1410 avatar
drapel cg
Și scuze greșeala mea ```care``` a returnat calea nu versiunea. L-am confundat cu celelalte comenzi.
Puncte:4
drapel cn

Variabila acceptă doar valoarea trimisă prin STDOUT sau fluxul de ieșire. Deoarece curl nu poate fi găsit, rezultatul pe care îl vedeți este un mesaj de eroare trimis prin STDERR sau fluxul de erori. Dacă doriți să stocați mesajul de eroare în variabilă în cazul unei erori, procedați în felul următor:

OUTPUT="$(care curl 2>&1)"

Aceasta direcționează toate datele de la STDERR la STDOUT. 2 este descriptorul de fișier pentru STDERR și 1 este descriptorul de fișier pentru STDOUT.

Sammy1410 avatar
drapel cg
Am incercat dar rezultatul este tot acelasi.
Sammy1410 avatar
drapel cg
După cum a sugerat utilizatorul bac0n, ```care``` nu a oferit nicio ieșire stocabilă atunci când pachetul nu a fost găsit. A trebuit să merg invers pentru ca codul meu principal să funcționeze.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.