Strona 1 z 1

problem ze skryptem

: 08 marca 2020, 15:16
autor: linux2525
Witam
Potrzebuje pomocy przy jednym skrypcie.Jego treść brzmi tak:Napisz skrypt, który poprosi Cię o wpisanie dowolnego zdania, następnie poprosi o numer wyrazu w zdaniu i wyświetli ten wyraz.

Zacząłem go wykonywać, ale niestety dalej mam problem. Oto moja część:

Kod: Zaznacz cały

#!/bin/bash
echo "Podaj dowolne zdanie"
read zdanie
echo $zdanie
echo "Podaj numer wyrazu w zdaniu"
read numer

i dalej mam problem, ponieważ nie za bardzo wiem jakiej komendy użyć
Napisałem tak:

Kod: Zaznacz cały

case "$numer" in
"1") grep ... $zdanie
Jeśli ktoś jest w stanie mi pomóc to będę bardzo wdzięczny.

Re: problem ze skryptem

: 08 marca 2020, 18:48
autor: dedito

Kod: Zaznacz cały

echo $zdanie | cut -d " " -f $numer

Re: problem ze skryptem

: 11 marca 2020, 20:08
autor: lizard
dedito pisze: 08 marca 2020, 18:48

Kod: Zaznacz cały

echo $zdanie | cut -d " " -f $numer
Jak się trafią dwie spacje lub "-e" w połączeniu z "\n", to cały misterny plan pójdzie w pis...:

Kod: Zaznacz cały

$ zdanie='-e ala\nma kota'
$ echo $zdanie
ala
ma kota
Jeżeli to Bash, co sugeruje pierwszy wiersz skryptu, to proponuję takie coś:

Kod: Zaznacz cały

read -r -p 'Podaj dowolne zdanie ' -a zdanie
read -p 'Podaj numer wyrazu w zdaniu ' numer
test "$numer" -le ${#zdanie[@]} -a "$numer" -gt 0 && echo "${zdanie[((numer-1))]}"
  1. Zdanie trafia do tablicy indeksowanej od zera, gdzie każde słowo jest jej elementem
  2. Pobranie numeru słowa
  3. Sprawdzenie, czy podana liczba mieści się w zakresie liczny słów w zdaniu i wyświetlenie wskazanego słowa
Kod zgody ze standardem POSIX:

Kod: Zaznacz cały

echo 'Podaj dowolne zdanie'
read -r zdanie
echo 'Podaj numer wyrazu w zdaniu'
read -r numer
printf '%s' "$t" | awk "{print \$$n}"
POSIX nie przewiduje tablic, więc zdanie trafia jako łańcuch znaków do zmiennej. "Printf" zabezpiecza nas przed niespodziankami takimi jak pokazałem na początku. "awk" wypisuje n-ty element z podanego zdania.

Polecam: