Îmi place să definesc o funcție în ~/.bashrc
și folosiți-l în diferite scripturi fie prin intermediul export -f
sau sursa .bashrc
.
Functia:
nano ~/.bashrc
function test_func() {
yt-dlp -f '299+140' --merge-output-format mp4 -cia List.txt;
}
export -f test_func
Scenariul:
#!/bin/bash
cd /home/admn/Downloads/YT_DL;
test_func --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s';
Problema-1:
După test_func
, restul comenzii --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s'
nu functioneaza deloc.
Problema-2:
Mai devreme când am încercat să folosesc sursa .bashrc
în scriptul meu, primeam aceste erori:
/usr/local/scripts/test.sh: linia 3: .bashrc: Nu există un astfel de fișier sau director
/usr/local/scripts/test.sh: linia 12: test_func: comanda nu a fost găsită
Funcția (fără export -f
):
nano ~/.bashrc
function test_func() {
yt-dlp -f '299+140' --merge-output-format mp4 -cia List.txt;
}
Scenariul (cu sursa .bashrc
):
#!/bin/bash
sursa .bashrc
cd /home/admn/Downloads/YT_DL;
test_func --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s';
Editare-1:
$ bash -xv /usr/local/scripts/test.sh
#!/bin/bash
sursa /home/admn/.bashrc
+ sursa /home/admn/.bashrc
# ~/.bashrc: executat de bash(1) pentru shell-uri non-login.
# vezi /usr/share/doc/bash/examples/startup-files (în pachetul bash-doc)
# de exemplu
# alias pip='pip3.7'
alias python='python3'
++ alias python=python3
# Dacă nu rulați interactiv, nu faceți nimic
caz $- in
*i*) ;;
*) întoarcere;;
esac
++ caz $- in
++ întoarcere
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: linia 5: test_func: comanda nu a fost găsită
$
Acestea sunt câteva dintre firele prin care am trecut; și, deși am câteva idei, tot nu am putut găsi o soluție pentru cazul meu de utilizare. Mulțumiri.
https://unix.stackexchange.com/questions/63665/how-to-define-a-bash-function-that-can-be-used-by-different-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
Definiți o funcție bash disponibilă la nivel global pentru a fi utilizată de orice script
OS: Ubuntu MATE 21.04
Bash: versiunea 5.1.4(1) (x86_64-pc-linux-gnu)