Trong bash, php/{composer,sismo}
mở rộng thành php/composer php/sismo
. Có cách nào để làm điều này với /bin/sh
(mà tôi tin là dấu gạch ngang), hệ vỏ? Tôi đang viết git hooks và would like to stay away from bash as long as I can.dấu gạch ngang tương đương với cú pháp ngoặc nhọn của bash?
Trả lời
Bạn có thể sử dụng printf
.
% printf 'str1%s\t' 'str2' 'str3' 'str4'
str1str2 str1str3 str1str4
Dường như không có cách nào. Bạn sẽ phải sử dụng các vòng lặp để tạo ra các tên này, có lẽ trong một hàm. Hoặc sử dụng các biến để thay thế các phần chung, có thể với "set -u" để ngăn chặn lỗi chính tả.
Tôi thấy rằng bạn thích dấu gạch ngang vì lý do hiệu suất, tuy nhiên bạn dường như không cung cấp bất kỳ số nào để chứng minh quyết định của mình. Tôi khuyên bạn nên đo lường sự khác biệt hiệu suất thực tế và đánh giá lại. Bạn cũng có thể rơi vào quá trình tối ưu hóa sớm. Hãy xem xét bao nhiêu thời gian thực hiện và gỡ lỗi bạn sẽ tiết kiệm được bằng cách sử dụng Bash so với hiệu suất giảm có thể.
Tôi thực sự thích giải pháp printf
được cung cấp bởi @mikeserv, nhưng tôi nghĩ tôi sẽ cung cấp ví dụ sử dụng vòng lặp.
Dưới đây có thể hữu ích nhất nếu bạn muốn thực hiện một lệnh cho mỗi chuỗi mở rộng, thay vì cung cấp cả hai chuỗi như args cho cùng một lệnh.
for X in composer sismo; do
echo "php/$X" # replace 'echo' with your command
done
Bạn có thể, tuy nhiên, viết lại nó như
ARGS="$(for X in composer sismo; do echo "php/$X"; done)"
echo $ARGS # replace 'echo' with your command
Lưu ý rằng $ARGS
là không thể viện chứng trong lệnh trên, và lưu ý rằng điều này có nghĩa rằng nội dung của nó được wordsplitted (tức là nếu có chuỗi ban đầu của bạn chứa không gian, nó sẽ phá vỡ).
- 1. Python subprocess để Bash: dấu ngoặc nhọn
- 2. dấu gạch ngang hai dấu chấm phẩy (;;) cú pháp
- 3. Khối - dấu ngoặc nhọn/không có dấu ngoặc nhọn?
- 4. Python Mô-đun với một dấu gạch ngang, hoặc dấu gạch ngang (-) trong tên của nó
- 5. Cú pháp ngoặc nhọn $ {var%. *} Có nghĩa là gì trong bash?
- 6. lỗi phân tích cú pháp json với dấu ngoặc kép
- 7. Cú pháp cú pháp ngoặc nhọn PHP cho biến thành viên
- 8. Eclipse và dấu ngoặc nhọn
- 9. lxml tương đương với cú pháp "OR" của BeautifulSoup?
- 10. Dấu gạch ngang là gì?
- 11. Cách di chuyển tập lệnh từ dấu gạch ngang sang dấu gạch ngang?
- 12. dấu ngoặc tròn trong cú pháp XAML
- 13. Ký hiệu dấu ngoặc nhọn trong PHP
- 14. Truy vấn cột dấu ngoặc nhọn oracle
- 15. Ý nghĩa của dấu gạch ngang kiểm tra Git
- 16. Dấu gạch ngang vs Dash: Thay thế Dash với Dấu gạch ngang
- 17. Ghép cặp dấu ngoặc nhọn, dấu ngoặc đơn và dấu ngoặc đơn
- 18. bash, gạch ngang và so sánh chuỗi
- 19. Dấu gạch chéo ("/") tương đương với dấu gạch chéo được mã hóa ("% 2F") trong phần đường dẫn của URL HTTP
- 20. Dấu ngoặc nhọn thêm trong mã C++
- 21. sử dụng Odd của dấu ngoặc nhọn trong C
- 22. dấu chấm phẩy sau dấu ngoặc nhọn trong c + +
- 23. Tại sao Try-Catch yêu cầu dấu ngoặc nhọn
- 24. bash regex với dấu ngoặc kép?
- 25. javascript - thay thế dấu gạch ngang (dấu gạch ngang) bằng dấu cách
- 26. psycopg2 tương đương với mysqldb.escape_string?
- 27. Regex để phù hợp với ký tự chữ, dấu gạch dưới, dấu chấm và dấu gạch ngang, cho phép dấu chấm và dấu gạch ngang chỉ ở giữa
- 28. Tại sao các đối số dòng lệnh bash sau 9 yêu cầu dấu ngoặc nhọn?
- 29. RewriteRule^- [L] AKA RewriteRule dấu gạch ngang dấu gạch ngang L
- 30. Tương đương với `__FILE__`,` __LINE__` trong bash
Tôi nghĩ rằng nó thực sự là tối ưu hóa sớm, tôi đã không chắc chắn vì tôi không viết nhiều kịch bản shell. Tôi nhận ra họ không làm gì phức tạp nên sự khác biệt sẽ chỉ bash thời gian khởi động ... – greg0ire
@ greg0ire, vâng, chủ yếu là thời gian khởi động, nhưng nó vẫn có thể quan trọng đối với trường hợp của bạn nếu bạn cần nhiều lời gọi script hoặc sử dụng nhiều sub-shells trong mã của bạn. Nếu hiệu suất là quan trọng đối với bạn, hãy đo lường nó cho một kịch bản điển hình. – spbnick
thời gian mang lại cho tôi sự khác biệt: bash = 5ms, sh = 3ms. Tôi nghĩ rằng đó là chấp nhận được mặc dù. – greg0ire