Điểm:0

Lệnh Bash với luồng đối số

lá cờ in

Tôi tìm cách cung cấp lệnh bash với nhiều đối số chỉ bằng một số đường cú pháp. Tôi đã biết $@ và $*, nhưng tôi không biết cách sử dụng chúng đúng cách. Sẽ thật tuyệt với cú pháp sau:

xác định đối số
lệnh &args

Một cú pháp nữa có thể như sau:

  1. Nối các đối số đơn và luồng trong một hàng
xác định args_stream
lệnh &args_stream arg_1
  1. Ghép nối đơn và luồng xen kẽ
xác định args_stream1
xác định args_stream2
lệnh &args_stream arg_1 &args_stream2

Có vẻ như đây là một cách làm không tốt, nhưng tôi muốn giảm bớt một số hàng trong tập lệnh trình bao của mình... :(

Cập nhật Ví dụ: Vì câu hỏi quá rộng nên người đọc không thể hiểu được ý nghĩa thực sự của nó, tôi đưa ra các ví dụ:

  1. Của tôi tiêu đề in chức năng có 7 đối số, nhưng hầu hết chúng có thể được tham số hóa. Một tùy chọn là đặt biến của tôi thành một số tham số mặc định. Tuy nhiên, tôi sẽ phải sắp xếp các đối số theo một hình thức khác thường, đối với các đối số chính là phần tử đúng nhất. Hình thức khác là viết các đối số như tôi đã đề cập: Tôi muốn sửa các đối số, luồng hoặc mảng này, như tôi đã đề cập như sau:
lệnh $1 [$2,1 $2,2 $2,3] $3 
  1. Bằng cách chạy lệnh git --help, tôi nhận được nhật ký bên dưới:

cách sử dụng: git [--version] [--help] [-C <đường dẫn>] [-c <tên>=<giá trị>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p| --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<đường dẫn>] [--work-tree=<đường dẫn>] [--namespace=<tên>]
           <lệnh> [<args>]

Các đối số giữa các dấu ngoặc là tùy chọn, nhưng có thể được cung cấp bằng dấu gạch nối kép -- ký hiệu. Nó là một tùy chọn cho ký hiệu luồng đối số của tôi.

David avatar
lá cờ cn
Khi tôi đọc câu hỏi của bạn, tôi thấy không có gì liên quan đến Ubuntu.
lá cờ cn
Ray
Cá nhân, tôi nghĩ rằng bạn đang đi về nó sai. Bạn đã quyết định chọn `bash` và đang hỏi làm thế nào một người sẽ làm những gì bạn đề xuất với `bash`. Sử dụng điểm số 2 của bạn với `git` làm ví dụ, tôi không coi mình là chuyên gia về `bash`, nhưng nếu tôi phải làm điều đó, tôi chắc chắn sẽ không sử dụng `bash`. Nếu `git` là một chương trình C++, thì tôi sẽ sử dụng [tùy chọn chương trình](https://www.boost.org/doc/libs/1_62_0/doc/html/program_options.html) của Boost. Tôi không nói rằng bạn không thể làm điều đó với `bash`, nhưng tôi không hy vọng nó sẽ dễ dàng.
Điểm:1
lá cờ lc

Có lẽ bạn đang nói về $1, $2, v.v., thành một kịch bản mà bạn có thể chỉ cần nói, youtube-dl đối số1 đối số2.

$ đối số lệnh1 đối số2

Ở đâu $1$2 đại diện cho các lập luận đó.

Hoặc,

Ngoài ra còn có những cách khác để làm như vậy:

lệnh = "proot"
lệnh+=" --link2symlink"
lệnh+="-0"
lệnh+=" -r $folder"

Như ví dụ.

Vì câu hỏi vẫn chưa rõ ràng đối với tôi, hãy cho tôi biết trước để chỉnh sửa hoặc xóa câu trả lời này một cách thích hợp.

Bruno Henrique Peixoto avatar
lá cờ in
Trong trường hợp một người muốn viết args [$1 $2] như trong ngôn ngữ python thay vì tách $1 $2
Satoshi Nakamoto avatar
lá cờ lc
không thực sự bởi vì trong ví dụ của tôi là một tập lệnh bash
Bruno Henrique Peixoto avatar
lá cờ in
Nhưng liệu có thể hay tôi phải gói gọn nó trong một số chức năng khác?
Satoshi Nakamoto avatar
lá cờ lc
câu hỏi của bạn rất khó hiểu và không cụ thể, điều đó xảy ra khi chúng tôi không hiểu rõ về một chủ đề. Tôi chắc rằng vấn đề của bạn là có thật nhưng cần có định hướng rõ ràng
Bruno Henrique Peixoto avatar
lá cờ in
Có vẻ như trường hợp của tôi có thể được giải quyết bằng xargs. Nhưng tôi đánh giá cao nỗ lực giải quyết vấn đề của mình. :)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.