свяжите cmd строку, начинающую с некоторого параметра

Если я получаю cmd строку как:

myscript param1 param2 param3 param4 param5 param6 ... (so on)

Как я могу сохранить строку, состоящую из параметров, запускающихся от некоторых определенный? $ дает мне целую связанную командную строку. То, в чем я нуждаюсь, должно получить строку, запускающуюся как "param4 param5 param6... (так на)".

4
задан 28.02.2016, 17:50

0 ответов

Необходимо взять aways неинтересные аргументы:

shift 3
4
ответ дан 07.12.2019, 19:44

Можно использовать вариант на массиве, режущем, чтобы сделать это:

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
4
ответ дан 07.12.2019, 19:44

Теги

Похожие вопросы