Мне нравится определять функцию в ~/.bashrc
и использовать его в разных сценариях либо через экспорт -f
или же источник .bashrc
.
Функция:
нано ~/.bashrc
функция test_func() {
yt-dlp -f '299+140' --merge-output-format mp4 -cia List.txt;
}
экспорт -f test_func
Сценарий:
#!/бин/баш
cd /home/admn/Загрузки/YT_DL;
test_func --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s';
Проблема-1:
После test_func
, остальная часть команды --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s'
вообще не работает.
Проблема-2:
Ранее, когда я пытался использовать источник .bashrc
в моем сценарии я получал эти ошибки:
/usr/local/scripts/test.sh: строка 3: .bashrc: нет такого файла или каталога
/usr/local/scripts/test.sh: строка 12: test_func: команда не найдена
Функция (без экспорт -f
):
нано ~/.bashrc
функция test_func() {
yt-dlp -f '299+140' --merge-output-format mp4 -cia List.txt;
}
Сценарий (с источник .bashrc
):
#!/бин/баш
источник .bashrc
cd /home/admn/Загрузки/YT_DL;
test_func --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s';
Редактировать-1:
$ bash -xv /usr/local/scripts/test.sh
#!/бин/баш
источник /home/admn/.bashrc
+ источник /home/admn/.bashrc
# ~/.bashrc: выполняется bash(1) для оболочек без входа в систему.
# см. /usr/share/doc/bash/examples/startup-files (в пакете bash-doc)
# Например
# псевдоним pip='pip3.7'
псевдоним python='python3'
++ псевдоним python=python3
# Если вы не работаете в интерактивном режиме, ничего не делайте
случай $- в
*и*) ;;
*) возвращаться;;
эсак
++ случай $- в
++ возврат
test_func --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s';
+ test_func --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s'
/usr/local/scripts/test.sh: строка 5: test_func: команда не найдена
$
Вот некоторые темы, через которые я прошел; и хотя у меня есть некоторые идеи, я все еще не мог найти решение для своего варианта использования. Спасибо.
https://unix.stackexchange.com/questions/63665/how-to-define-a-bash-function-that-can-be-used-by-other-scripts
https://stackoverflow.com/questions/6218268/how-to-define-a-bash-function-for-use-in-any-script
https://stackoverflow.com/questions/17219174/variables-set-in-bashrc-and-accessing-them-in-shellscript
https://stackoverflow.com/questions/1500499/how-do-you-call-a-function-defined-in-bashrc-from-the-shell
Определите глобально доступную функцию bash, которая будет использоваться любым скриптом.
ОС: Ubuntu MATE 21.04
Bash: 5.1.4(1)-выпуск (x86_64-pc-linux-gnu)