Прочтите справочную страницу execve(2)
. Ограничение на один необязательный аргумент зависит от ОС.Linux рассматривает все слова после интерпретатора как один единственный аргумент
Если вы хотите сделать это:
#! /path/to/interpreter --opt1 opt1-arg --opt2 opt2-arg --opt3 nonopt-arg1 nonopt-arg2
Вы действительно должны это сделать
#!/bin/sh
exec /path/to/interpreter --opt1 opt1-arg --opt2 opt2-arg --opt3 nonopt-arg1 nonopt-arg2 "$@"
#...................................................................................... ^^^^
ОБНОВЛЕНИЕ :Я заметил, что программа env
имеет опцию -S
только для этой цели :шебанг может быть (хотя, если бы мне пришлось поддерживать эту программу, я бы не был счастлив)
#!/usr/bin/env -S /path/to/interpreter --opt1 opt1-arg --opt2 opt2-arg --opt3 nonopt-arg1 nonopt-arg2
Прочтите справочную страницу env(1)
.
Я исправил эту проблему с помощью трюка из https://serverfault.com/a/779381. Автор сказал:
There is a trick to get your data back - just recreate RAID 0 with the same parameters as you had earlier and when it asks you to Initialize the array just say NO.
Пометить повторно вставленный физический диск как исправный
MegaCli64 -PDMakeGood -PhysDrv [12:23] -aALL
Удалите постороннюю метку:
MegaCli64 -CfgForeign -Clear -aALL
Удалить исходный виртуальный диск RAID 0 (, в моем случае это виртуальный диск 4):
MegaCli64 -CfgLdDel -L4 -a0
Воссоздайте диск RAID 0 с той же конфигурацией:
MegaCli64 -CfgLdAdd -r0 [12:12,12:23] WB Direct -a0