Bash: Как вызвать функцию на Bash внутри аргумента команды?

Как мне вызвать функцию на Bash внутри аргумента команды ?

Есть вот такая система директорий

Aircrack-NG_scripts
|
+--+-system
|  |
|  +----Wifi_get-interface.sh
|
+----Wifi_Normal-Mode.sh

В файле Wifi_get-interface.sh который в директории system находится вот такой код

#!/bin/bash

function get_interface {
    read -p 'Wifi Interface: ' interface
    return $interface
}


function get_mon_interface {
    get_interface
    mon_interface="${interface}mon"
    return $mon_interface
}

export -f get_interface
export -f get_mon_interface

А в файле Wifi_Normal-Mode.sh вот такой

#!/bin/bash
source ./system/Wifi_get-interface.sh

./system/Wifi_get-interface.sh

airmon-ng stop get_mon_interface
service network-manager start

Когда я выполняю Bash сценарий Wifi_Normal-Mode.sh Aircrack-NG говорит что интерфейс get_mon_interface не найден. Мне нужно что когда Bash сценарий Wifi_Normal-Mode.sh выполнялся он брал функцию из файла Wifi_get-interface.sh который в директории system и чтоб выполнял эту функцию в команде sudo airmon-ng stop get_mon_interface.

Как исправить подскажите.


Ответы (1 шт):

Автор решения: user7860670

У вас тут две проблемы - функцию надо вызывать в контексте вызова $(), а сама функция может возвращать только код завершения (целое число то бишь), так что строку придется печатать. Как-то так:

function foo
{
        read -p "Wifi Interface: " interface
        echo "${interface}"
}

echo "$(foo)"

в этом примере "$(foo)" заменится на результат echo "${interface}"

→ Ссылка