Ale wydaje się, że działa to na zasadzie char by char w wersji 4.1.2, czy istnieje sposób, aby to zrobić na zasadzie słowo po słowie?
Alexej Magura
@AlexejMagura Nie rozumiem, co masz na myśli. Działa to na elementy tablicy. Jeśli masz elementy jednoznakowe, będzie działać „na postaciach”. Jeśli każdy element jest słowem, działa na słowa. Może próbujesz tego na sznurku, a nie na tablicy?
terdon
Próbuję tego na kopii „$ @”, która, jak sądzę, może w tym momencie stać się ciągiem, nie jestem pewien.
Alexej Magura,
W wersji bash 4.2.46 "${@:1:2}"faktycznie dostarcza mi argumentów z pierwszej i drugiej linii poleceń . Tymczasem "${@:1}"daje mi pełne argumenty wiersza poleceń i "${@:0}"podaje nazwę skryptu, a następnie pełne argumenty wiersza poleceń .
Rockallite,
@Rockallite dobrze, tak. Drugi i trzeci element $@ tablicy to pierwszy i drugi argument. "${@:1}"wypisze całą tablicę zaczynając od 2. elementu (1. argument) i ${@:0}całą tablicę zaczynając od 1. elementu, który jest nazwą skryptu. Czego się spodziewałeś?
"$@"
. Twojeargv
zadanie zostanie zerwane, jeśli jakikolwiek argument zawiera spacje.Odpowiedzi:
Możesz użyć tego samego formatu, co dla dowolnej innej tablicy. Aby wyodrębnić 2. i 3. element
$@
, wykonaj:źródło
"${@:1:2}"
faktycznie dostarcza mi argumentów z pierwszej i drugiej linii poleceń . Tymczasem"${@:1}"
daje mi pełne argumenty wiersza poleceń i"${@:0}"
podaje nazwę skryptu, a następnie pełne argumenty wiersza poleceń .$@
tablicy to pierwszy i drugi argument."${@:1}"
wypisze całą tablicę zaczynając od 2. elementu (1. argument) i${@:0}
całą tablicę zaczynając od 1. elementu, który jest nazwą skryptu. Czego się spodziewałeś?