Tetapi ini tampaknya bekerja dengan basis char by char di v4.1.2, apakah ada cara untuk melakukannya berdasarkan kata per kata?
Alexej Magura
@AlexejMagura Saya tidak mengerti maksud Anda. Itu bertindak pada elemen-elemen array. Jika Anda memiliki elemen satu karakter, itu akan berfungsi "pada karakter". Jika setiap elemen adalah kata, itu berfungsi pada kata-kata. Apakah Anda mungkin mencoba ini pada string dan bukan array?
terdon
Saya mencobanya pada salinan "$ @", yang saya kira mungkin menjadi string pada saat itu, saya tidak yakin.
Alexej Magura
Pada bash 4.2.46, "${@:1:2}"sebenarnya memberi saya argumen baris perintah 1 dan 2 . Sementara itu, beri saya argumen baris perintah penuh , dan beri saya nama skrip diikuti oleh argumen baris perintah penuh . "${@:1}""${@:0}"
Rockallite
@Rockallite baik, ya. Elemen ke-2 dan ke-3 dari $@ array adalah argumen ke-1 dan ke-2. "${@:1}"akan mencetak seluruh array yang dimulai dengan elemen ke-2 (argumen ke-1) dan ${@:0}seluruh array mulai dari elemen ke-1 yang merupakan nama skrip. Apa yang kamu harapkan?
"$@"
.argv
Tugas Anda akan pecah jika ada argumen yang berisi spasi.Jawaban:
Anda dapat menggunakan format yang sama dengan array lainnya. Untuk mengekstrak elemen ke-2 dan ke-3
$@
, Anda harus melakukan:sumber
"${@:1:2}"
sebenarnya memberi saya argumen baris perintah 1 dan 2 . Sementara itu, beri saya argumen baris perintah penuh , dan beri saya nama skrip diikuti oleh argumen baris perintah penuh ."${@:1}"
"${@:0}"
$@
array adalah argumen ke-1 dan ke-2."${@:1}"
akan mencetak seluruh array yang dimulai dengan elemen ke-2 (argumen ke-1) dan${@:0}
seluruh array mulai dari elemen ke-1 yang merupakan nama skrip. Apa yang kamu harapkan?