Проблема с аргументами в Bash в консоли

У меня есть большая проблема, и я не знаю, как я могу ее решить.

#!/bin/bash
function prueba(){
        valor=$1
        echo "Hola ${valor}"
}
prueba $valor

поэтому, когда я пишу в консоли:

./beta1.sh prueba 123

Распечатать:

Hola

Я ожидал увидеть:

Hola 123

person Gianpaul Custodio Chavarria    schedule 06.06.2021    source источник
comment
Заменить $valor на $2?   -  person Cyrus    schedule 06.06.2021
comment
В функции prueba $1 — это первый параметр, передаваемый функции. Ваш скрипт вызывает prueba с $valor, который не определен.   -  person roby    schedule 06.06.2021
comment
$1 — это только первый аргумент. Вы передаете два аргумента, а не один, и в функции $1 относится к первому аргументу функции, а не к первому аргументу сценария. Поскольку до тех пор, пока функция не будет запущена, valor пусто, функции вообще не передаются аргументы, как в настоящее время написано.   -  person Charles Duffy    schedule 06.06.2021
comment
Рассмотрим prueba "$*"   -  person Charles Duffy    schedule 06.06.2021
comment
Кстати, function — плохой тон; см. wiki.bash-hackers.org/scripting/obsolete (об этом есть записи в нескольких таблицах; прочитайте их обе). Лучше просто написать prueba() { ... без function в начале.   -  person Charles Duffy    schedule 06.06.2021