Mam prosty skrypt, w którym pierwszy argument jest zarezerwowany dla nazwy pliku, a wszystkie inne opcjonalne argumenty powinny zostać przekazane do innych części skryptu.Przetwarzaj wszystkie argumenty oprócz pierwszego (w skrypcie basha)
Korzystanie z Google znalazłem this wiki, ale pod warunkiem dosłownego przykład:
echo "${@: -1}"
nie mogę nic innego do pracy, jak:
echo "${@:2}"
lub
echo "${@:2,1}"
Dostaję "złe zastąpienie" z terminala.
Na czym polega problem i jak mogę przetworzyć wszystkie oprócz pierwszego argumentu przekazanego do skryptu Bash?
Aby wywołać jeszcze kogoś zagubionego, podano niewłaściwy kod shebang, który powodował, że '{@: 2}" nie działał, dlatego poprawna odpowiedź pasuje do powyższych. – Guvante
Właśnie użyłeś domyślnej powłoki, która jest myślnikiem na Ubuntu i wielu innych Linuxach. W myślniku "$ {@: -1}" interpretuje się jako: {parametr: -word} - Użyj wartości domyślnych i użyj słowa, jeśli parametr nie jest zdefiniowany lub jest pusty. Tak więc w myślniku "$ {@: -1}" wyniki są dokładnie takie same jak "$ @". Aby użyć bashu, wystarczy użyć następującego pierwszego wiersza w pliku skryptu: #!/Bin/bash – luart