объединить строку cmd, начиная с некоторого параметра

1496
azerIO

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

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

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

4

2 ответа на вопрос

4
ceving

Вы должны убрать неинтересные аргументы:

shift 3 
4
Gordon Davisson

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

args1to3="${*:1:3}" # Three arguments starting from $1 args4on="${*:4}" # The arguments starting from $4 

Кстати, это может быть не то, что вы хотите, потому что он просто склеивает аргументы вместе с пробелами между ними; если какой-либо из аргументов также содержит пробелы, он потеряет отслеживание того, какие пробелы были внутри аргументов, а какие были между ними (см. BashFAQ # 50 ). Если вы хотите иметь возможность хранить их прямо, используйте вместо этого массив:

args1to3=("${@:1:3}") # Three arguments starting from $1, as an array args4on=("${@:4}") # The arguments starting from $4, as an array  othercmd "$" # Pass the first 3 arguments intact for somearg in "$"; do # Process args 4 on, one at a time othercmd2 "$somearg" done