我想创建自己的程序,但我不知道如何...例如我想制作一个典型的'Hello $ user'程序。
所以......
├── hi
│ ├── hi.sh
│ ├── hi_to.sh
hi.sh
#!/bin/bash
~/hi/hi_to.sh $1
hi_to.sh
#!/usr/bin/php
<?php
echo "\nHellO ".$argv[1]."\n";
?>
在终端中运行:
me:~/hi
→ ./hi.sh User
HellO User
我的问题是:如何将所有这些文件编译成一个bash程序?
答案 0 :(得分:1)
你没有。如果你想在一个脚本中使用它,那么你首先将它放在一个脚本中。
答案 1 :(得分:0)
我认为我们不理解这个问题,因为你可以像这样打电话给hi_to.sh:
./hi_to.sh user
它会像你想要的那样运行,摆脱第一个sh脚本。
答案 2 :(得分:0)
hi
chmod u+x path/to/hi
或chmod a+rx path/to/hi
,请参阅http://en.wikipedia.org/wiki/Chmod)答案 3 :(得分:0)
我能看到这个'组合'的唯一方法是使用here-doc,这基本上会导致第一个脚本生成第二个脚本,然后执行它:
#!/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在运行时会扩展。 shell脚本中的$$
只会扩展为脚本的PID,实际的临时文件将类似于/tmp/1234.php
。 mktemp(1)
是一种更安全的方法,可以使临时文件名更能抵抗链接攻击和冲突。
它还将PHP的退出状态保存在retval
中,然后在脚本退出时返回。
生成的文件看起来像这样(假设shell脚本的第一个参数是foo
):
<?php
$string="foo";
echo "\nHello " . $string . "\n";
?>
这是一个关于如何使用bash编写其他脚本的讽刺演示,但至少证明了它的可能性。它是我能想到的“组合”(如你所示)你发布的两个脚本的唯一方法。