Bagaimana saya memanggil fungsi setelah meminta masukan dalam skrip shell Linux?

1

Judulnya mengatakan itu semua. Setelah saya diminta, saya ingin ya dan tidak untuk masing-masing memanggil fungsi.

# Check to see if you ran this script before

echo
echo I need to know if this is your first time...
while true; do
    read -p "" yn
        case $yn in
            [Yy]* ) new;;
            [Nn]* ) exit;;
                * ) echo "Please answer yes or no.";;
            esac
done

# Define function as new
new (){
    clear; echo As you are new, I will need a few things.
} 

# Define function as root

root(){
    echo "$(tput setaf 6)Hello, world$(tput sgr0)"
}
echo

Jika pengguna memasukkan "y", saya ingin skrip memanggil fungsi "baru". Seperti sekarang, skrip akan mencoba menjalankan program yang disebut "baru" yang tidak ada. LOL. Terima kasih

penipu
sumber
Apakah Anda mencoba menyebutnya dengan tanda kurung: new()?
Danatela
Ya saya lakukan. Saya mendapat kesalahan.
rombreaker

Jawaban:

2

Anda perlu mendefinisikan fungsi Anda sebelum memanggilnya:

# Define function as new
new (){
    clear; echo As you are new, I will need a few things.
} 

# Check to see if you ran this script before
echo
echo I need to know if this is your first time...
while true; do
    read -p "" yn
        case $yn in
            [Yy]* ) new;;
            [Nn]* ) exit;;
                * ) echo "Please answer yes or no.";;
            esac
done
nc4pk
sumber
0

Dengan asumsi ini adalah bash, setiap baris dalam skrip Anda akan dibaca dari yang paling sedikit sampai yang paling besar. IE "Line 1, lalu line 2, kemudian line 3, dan seterusnya. Dengan mengingat hal ini, Anda dapat membuat banyak, banyak fungsi dalam sebuah skrip dan memanggil mereka masing-masing tepat setelah yang lain seperti:

#!/bin/bash

func_1() {
echo "Doing something."
}

func_2() {
echo "Doing something again."
}

func_3() {
echo "Doing something for the last time."
}

func_1
func_2
func_3

Namun, untuk memanggil setiap fungsi, panggilan harus selalu setelah definisi seperti:

#!/bin/bash

func_1() {
echo "Doing something."
}

func_2() {
echo "Doing something again."
}

func_3() {
echo "Doing something for the last time."
}

until [ "$SOMETHING" == "SOMETHING_1" ]
do
func_1
done

until [ "$SOMETHING_2" == "SOMETHING_3" ]
do
func_2
done

until [ "$SOMETHING_4" == "SOMETHING_5" ]
do
func_3
done

Ini akan membantu untuk lebih memanfaatkan fungsi dalam skrip Anda yang lebih kompleks. Semoga ini bisa membantu.

Yokai
sumber