Tôi muốn xác định một chức năng trong ~/.bashrc
và sử dụng nó trong các tập lệnh khác nhau thông qua xuất -f
hoặc nguồn .bashrc
.
Chức năng:
nano ~/.bashrc
hàm test_func() {
yt-dlp -f '299+140' --merge-output-format mp4 -cia List.txt;
}
xuất -f test_func
Kịch bản:
#!/bin/bash
cd /home/admn/Downloads/YT_DL;
test_func --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s';
Vấn đề-1:
Sau đó test_func
, phần còn lại của lệnh --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s'
không hoạt động chút nào.
Vấn đề-2:
Trước đó khi tôi cố gắng sử dụng nguồn .bashrc
trong kịch bản của tôi, tôi đã nhận được những lỗi này:
/usr/local/scripts/test.sh: dòng 3: .bashrc: Không có tệp hoặc thư mục như vậy
/usr/local/scripts/test.sh: dòng 12: test_func: không tìm thấy lệnh
Chức năng (không có xuất -f
):
nano ~/.bashrc
hàm test_func() {
yt-dlp -f '299+140' --merge-output-format mp4 -cia List.txt;
}
Kịch bản (với nguồn .bashrc
):
#!/bin/bash
nguồn .bashrc
cd /home/admn/Downloads/YT_DL;
test_func --autonumber-start 101 -o '%(autonumber)1d_%(title)s.%(ext)s';
Chỉnh sửa-1:
$ bash -xv /usr/local/scripts/test.sh
#!/bin/bash
nguồn /home/admn/.bashrc
+ nguồn /home/admn/.bashrc
# ~/.bashrc: được thực thi bởi bash(1) đối với shell không đăng nhập.
# xem /usr/share/doc/bash/examples/startup-files (trong gói bash-doc)
# ví dụ như
# bí danh pip='pip3.7'
bí danh python='python3'
++ bí danh python=python3
# Nếu không chạy tương tác thì đừng làm gì
trường hợp $- trong
*tôi*) ;;
*) trở lại;;
thoát hiểm
++ trường hợp $- trong
++ trở lại
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: dòng 5: test_func: không tìm thấy lệnh
$
Đây là một số chủ đề tôi đã trải qua; và mặc dù tôi đã có một số ý tưởng, nhưng tôi vẫn không thể tìm ra giải pháp cho trường hợp sử dụng của mình. Cảm ơn.
https://unix.stackexchange.com/questions/63665/how-to-define-a-bash-feft-that-can-be-used-by-different-scripts
https://stackoverflow.com/questions/6218268/how-to-define-a-bash-feft-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
Xác định hàm bash có sẵn trên toàn cầu sẽ được sử dụng bởi bất kỳ tập lệnh nào
Hệ điều hành: Ubuntu MATE 21.04
Bash: 5.1.4(1)-phát hành (x86_64-pc-linux-gnu)