Я использую PHP и пытаюсь отправить скрипту оболочки одну строку, содержащую несколько команд, разделенных ";"(и, возможно, перевод строки).
Однако разделение не работает должным образом от IFS.
Мой ввод
"mycommand1 ' hello word \n ';\nmycommand2 'hello world;\nmycommand3 'bye world;\n"
Но по какой-то причине это только сохранениепервая строка внутри CMDS_ARR
#!/bin/bash
COMMANDS="mycommand1 ' hello word
';
mycommand2 'hello world;
mycommand3 'bye world;
"
# Delimit single-line commands by ";" into multi commands
# array $CMDS_ARR to include all commands as single input
IFS=';' read -ra CMDS_ARR <<< "$COMMANDS"
for CMD in "${CMDS_ARR[@]}"; do
printf "THE COMMAND: *$CMD*\n"
done
Выход
THE COMMAND: *mycommand1 ' hello word*