Tôi đang cố gắng tạo một mảng các tên tệp, dựa trên hai biến và sử dụng mở rộng dấu ngoặc, như sau:
#!/bin/bash
altdir=/usr
arg=abc
tries=({.,$altdir}/{$arg,$arg/main}.{tex,ltx,drv,dtx})
for i in "${tries[@]}"; do echo $i; done
Câu lệnh cuối cùng liệt kê các tệp tôi muốn chính xác:
./abc.tex
./abc.ltx
./abc.drv
./abc.dtx
./abc/main.tex
./abc/main.ltx
./abc/main.drv
./abc/main.dtx
/usr/abc.tex
/usr/abc.ltx
/usr/abc.drv
/usr/abc.dtx
/usr/abc/main.tex
/usr/abc/main.ltx
/usr/abc/main.drv
/usr/abc/main.dtx
Nhưng shellcheck cho tôi biết rằng hai biến, altdir và arg, dường như không được sử dụng:
$ shellcheck testscript
In testscript line 3:
altdir=/usr
^-- SC2034: altdir appears unused. Verify it or export it.
In testscript line 4:
arg=abc
^-- SC2034: arg appears unused. Verify it or export it.
Có cách nào tốt hơn để làm điều này?
2
Có vẻ như là một lỗi của shellcheck. Họ dường như không nhận ra một cách sử dụng khác nhau trong việc mở rộng cú đúp.
—
choroba
Tôi nghĩ bạn ổn. Một cảnh báo biến không được sử dụng có nghĩa là để bắt lỗi chính tả; nếu bạn biết bạn không phạm sai lầm, có thể bỏ qua nó.
—
Tom Hunt
Lịch sử cam kết của @WyboDekker shellcheck cho thấy điều này đã được sửa trong 0.3.8. Phiên bản 0.3.4 của bạn đã hơn một năm tuổi.
—
anh chàng kia