Если я получаю cmd строку как:
myscript param1 param2 param3 param4 param5 param6 ... (so on)
Как я могу сохранить строку, состоящую из параметров, запускающихся от некоторых определенный? $ дает мне целую связанную командную строку. То, в чем я нуждаюсь, должно получить строку, запускающуюся как "param4 param5 param6... (так на)".
Можно использовать вариант на массиве, режущем, чтобы сделать это:
args1to3="${*:1:3}" # Three arguments starting from $1
args4on="${*:4}" # The arguments starting from $4
BTW, это не может быть тем, что Вы хотите, потому что он просто засовывает аргументы вместе с пробелами между ними; если какой-либо из аргументов также будет содержать пробелы, то это потеряет след, которого пробелы были внутренними аргументами и которые были между ними (см. BashFAQ № 50). Если Вы хотите смочь сохранить их прямо, используйте массив вместо этого:
args1to3=("${@:1:3}") # Three arguments starting from $1, as an array
args4on=("${@:4}") # The arguments starting from $4, as an array
othercmd "${args1to3[@]}" # Pass the first 3 arguments intact
for somearg in "${args4on[@]}"; do # Process args 4 on, one at a time
othercmd2 "$somearg"
done