Единственный способ, которым я мог видеть это «комбинированный» является использование здесь-документ, который в основном вызывает первый скрипт для создания второго, а затем выполнить его:
#!/bin/sh
cat <<EOF> /tmp/$$.php
<?php
\$string="$1";
echo "\nHellO ". \$string ."\n";
?>
EOF
/usr/bin/php -q /tmp/$$.php
retval=$?
rm /tmp/$$.php
exit $retval
В этом примере $1
будет расширяться к первому аргументу. Я избежал других переменных (которые связаны только с PHP), которые PHP будет расширяться при его запуске. $$
в сценарии оболочки просто расширяется до PID скрипта, фактический временный файл будет чем-то вроде /tmp/1234.php
. mktemp(1)
- гораздо более безопасный способ создать временное имя файла, которое более устойчиво к атакам и столкновениям ссылок.
Он также сохраняет статус выхода PHP в retval
, который затем возвращается при выходе сценария.
Полученный файл будет выглядеть следующим образом (предполагается, что первый аргумент в сценарий оболочки является foo
):
<?php
$string="foo";
echo "\nHello " . $string . "\n";
?>
Это своего родом неприглядной демонстрации для того, как использовать Баш писать другие сценарии, но в наименее демонстрирует, что это возможно. Это единственный способ, которым я мог подумать «объединить» (как вы указали) два сценария, которые вы разместили.
Можете ли вы более подробно объяснить, что вы подразумеваете под «скомпилировать все эти файлы в одну программу bash»? –
Я хочу сделать одну команду bash, например 'cd, cal & so on ..'. В этом случае команда «привет». не просто добавить псевдоним в «.bashrc». – flienteen
Создайте каталог под названием «~/bin». Измените файл '~/.bashrc', чтобы ваш PATH включал' ~/bin'. Скопируйте свой скрипт в '~/bin', переименовав его в« привет »(без' .sh'). После перезапуска сеанса или источника '~/.bashrc' из командной строки новый PATH вступит в силу. Затем вы можете ввести «привет пользователь» в командной строке * et voilà *. –