Saya mencari solusi paling sederhana yang membutuhkan $*
sebagai input, dan diperluas ke setiap elemen yang diawali dan diakhiri dengan string yang diberikan:
$*=foo bar baz
<solution(x,y)>=xfooy xbary xbazy
Saya dapat melakukan prepending atau appending, tetapi tidak keduanya:
echo ${*/#/x}
# prints xfoo xbar xbaz
echo ${*/%/y}
# prints fooy bary bazy
Saya tidak dapat menggabungkan dua solusi. Dokumentasi mengklaim nilai yang dikembalikan oleh ekspansi dalam parameter=* case adalah daftar, tetapi saya tidak dapat menggunakannya seperti itu. Saya ingin meneruskan larik nilai yang dihasilkan ke perintah lebih lanjut sebagai argumen terpisah, oleh karena itu membangun satu string saja tidak akan berhasil.
Jawaban yang Diterima:
#!/bin/bash
echo $*
FIELDS=("${@/#/x}")
FIELDS=("${FIELDS[@]/%/y}")
echo "${FIELDS[*]}"
Saat dijalankan:
$ t.sh foo bar baz
foo bar baz
xfooy xbary xbazy
Linux – Animasi Webp Ke Animasi Gif (cli)?
Bagaimana Menemukan Penyebab Jam Melayang Pada Sistem Tertanam Kustom?