Puncte:0

Cum se face o comandă ca variabilă în shell scrpit

drapel in

Am scris un script pentru a verifica ieșirea fișierului, apoi a verifica dacă acel fișier are o linie și, în sfârșit, am imprimat acea linie, iată asta

#!utilizator/bin/bash
ecou „$1 $2”
dacă [ -e „$1” ]; atunci
    if [ "$(wc -l "$1")" -ge 1 ]; atunci
        sed -n „1p” „$1”
    fi
fi

Dar returnează o eroare ca Număr ilegal: 3 /home/k/Documents/text.txt

Întrebarea mea este cum se face wc -l „$1” ca variabilă?

Puncte:3
drapel hr

Ieșirea implicită a fișier wc -l include numele fișierului, precum și numărul.

$ wc -l fișier
8 dosar

Ca o soluție, puteți redirecționa conținutul fișierului către wc -l prin fluxul de intrare standard al shell-ului:

$ wc -l < ​​fișier
8

Asa de

if [ "$(wc -l < ​​"$1")" -ge 1 ]; atunci
    sed -n „1p” „$1”
fi
drapel in
Mulțumesc, funcționează!!
Puncte:1
drapel tr
ash

Păstrați doar primul câmp în WC ieșire. Awk este instrumentul meu preferat pentru asta:

wc -l „$1” | awk '{ print $1 }'

Pentru a captura acest lucru într-o variabilă:

COUNT="$(wc -l „$1” | awk „{printează $1}”)”
drapel in
Mulțumesc pentru răspuns

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.