Puncte:0

Comanda Bash cu flux de argumente

drapel in

Caut o modalitate de a furniza o comandă bash cu mai multe argumente numai prin unele sugar de sintaxă. Știu deja $@ și $*, dar nu știu cum să le folosesc corect. Ar fi bine cu următoarea sintaxă:

definiți argumentele
comanda &args

O altă sintaxă poate fi următoarea:

  1. Concatenează argumente unice și stream într-un rând
definiți args_stream
comanda &args_stream arg_1
  1. Concatenați unic și transmiteți alternativ
definiți args_stream1
definiți args_stream2
comanda &args_stream arg_1 &args_stream2

Pare o practică proastă, dar vreau să reduc câteva rânduri din scripturile mele shell... :(

Actualizați Exemple: Deoarece întrebarea este atât de largă încât cititorii nu au putut înțelege sensul ei real, ofer exemple:

  1. Ale mele printHeader funcţie are 7 argumente, dar cele mai multe dintre ele pot fi parametrizate. O opțiune este să setez variabila mea la un parametru implicit. Cu toate acestea, ar trebui să ordonez argumentele într-o formă neobișnuită, pentru argumentele principale ca elementele cele mai potrivite. O altă formă este de a scrie argumentele așa cum menționez: aș dori să corectez aceste argumente, flux sau matrice, așa cum menționez mai jos:
comanda $1 [$2.1 $2.2 $2.3] $3 
  1. Prin rulare de comandă git --help, primesc jurnalul de mai jos:

utilizare: git [--version] [--help] [-C <cale>] [-c <nume>=<valoare>]
           [--exec-path[=<cale>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<cale>] [--work-tree=<cale>] [--namespace=<nume>]
           <comandă> [<args>]

Argumentele dintre paranteze sunt opționale, dar pot fi furnizate prin cratima dublă -- notaţie. Este o opțiune pentru notația mea pentru fluxul de argumente.

David avatar
drapel cn
Pe măsură ce vă citesc întrebarea, nu văd nimic care să aibă vreo legătură cu Ubuntu.
drapel cn
Ray
Personal, cred că ai greșit. V-ați hotărât pe „bash” și vă întrebați cum ar face ceea ce ați sugerat cu „bash”. Folosind punctul tău #2 cu `git` ca exemplu, nu mă consider un expert în `bash`, dar dacă ar trebui să fac asta, cu siguranță nu aș folosi `bash`. Dacă `git` ar fi un program C++, aș folosi [opțiunile de program] ale lui Boost (https://www.boost.org/doc/libs/1_62_0/doc/html/program_options.html). Nu spun că nu poți face asta cu `bash`, dar nu mă aștept să fie ușor.
Puncte:1
drapel lc

Poate vorbești despre $1, $2, și așa mai departe, într-un script în care puteți spune doar, youtube-dl argument1 argument2.

$ comanda argument1 argument2

Unde $1 și $2 reprezintă acele argumente.

Sau,

Există și alte modalități de a face acest lucru:

comanda="proot"
comandă+=" --link2symlink"
comanda+=" -0"
comandă+=" -r $dosar"

Ca exemple.

Deoarece întrebarea este încă neclară pentru mine, anunțați-mă înainte pentru a edita sau șterge acest răspuns în mod corespunzător.

Bruno Henrique Peixoto avatar
drapel in
În cazul în care cineva dorește să scrie argumente [$1 $2] ca în limbajul python în loc de $1 $2 separate
Satoshi Nakamoto avatar
drapel lc
nu chiar pentru că în exemplul meu este un script bash
Bruno Henrique Peixoto avatar
drapel in
Dar este posibil sau ar trebui să-l încapsulez într-o altă funcție?
Satoshi Nakamoto avatar
drapel lc
intrebarea ta este foarte confuza si nu specifica, asta se intampla cand nu intelegem bine un subiect. Sunt sigur că problema ta este reală, dar are nevoie de o direcție clară
Bruno Henrique Peixoto avatar
drapel in
Se pare că cazul meu poate fi rezolvat de xargs. Dar apreciez efortul de a-mi rezolva problema. :)

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.