アプリ版:「スタンプのみでお礼する」機能のリリースについて

bashシェルスクリプトは例えば


test.sh:
#!/bin/sh
phpscript=`cat <<'EOF'
$x=2;
$y=3;
$z=$x+$y;
echo "{$x}プラス{$y}イコール{$z}。\n";
exit;
EOF
`
php -r "$phpscript"


と書けますが1行少なくするために
文字列変数$phpscriptを使わないで
最後の
php -r "$phpscript"

phpscript=`cat <<'EOF'
をまとめて


test.sh:
#!/bin/sh
php -r `cat <<'EOF'
$x=2;
$y=3;
$z=$x+$y;
echo "{$x}プラス{$y}イコール{$z}。\n";
exit;
EOF
`

としても機能しません
1行少なくするためにはどのように書けばよいのでしょうか?

よろしくお願いします

A 回答 (3件)

ドキュメントに<?php加えていいなら


#!/bin/sh
php <<'EOF'
<?php
$x=2;
$y=3;
$z=$x+$y;
echo "{$x}プラス{$y}イコール{$z}。\n";
exit;
?>
EOF

だめでも、sedで加えれば
#!/bin/sh
sed -e '1i<?php' -e '$a?>' <<'EOF' | php
$x=2;
$y=3;
$z=$x+$y;
echo "{$x}プラス{$y}イコール{$z}。\n";
exit;
EOF
    • good
    • 0
この回答へのお礼

素晴らしすぎる提案ありがとうございます
PHPコードの中で"も'も`も全て使えます
スタンドアローンの素晴らしいコードができました

お礼日時:2011/12/10 06:46

php部分を別ファイルにするという選択肢はないわけ?



/* test.php */
<?PHP
$x=2;
$y=3;
$z=$x+$y;
echo "{$x}プラス{$y}イコール{$z}。\n";
exit;
?>

/* test.sh */
#!/bin/sh

php -f "xxx.php";

この回答への補足

ありがとうございます
まさにご提案の方法でやっていたものを
ファイル管理を数年後に見ても混乱しないように
一つにまとめようとして今回の質問に至ったのです
バッククウォートは稀にしか使わないので妥協できるのですが
',"は頻繁に使うので使えないとしんどいです
とにかく最初のご提案のものを'を使わないように手直しして使います
何かいいアイデアがでてきたらよろしくお願いします

補足日時:2011/12/09 17:00
    • good
    • 0
この回答へのお礼

捕捉の追加:
最初のご提案のものを採用してみると
'は使えなくなったのですが
今度は`が使えるようになったので
$flv=shell_exec('find zmusic -name "*.flv"');
の部分を
$flv=`find zmusic -name "*.flv"`;
と書けるようになり便利になった部分もありました
ありがとうございました

お礼日時:2011/12/09 17:29

クォートが競合さえしなければcatしないでもこれで十分では?



#!/bin/sh

php -r '
$x=2;
$y=3;
$z=$x+$y;
echo "{$x}プラス{$y}イコール{$z}。\n";
exit;
';

この回答への補足

ありがとうございます
その方法で今回のphpスクリプトは機能しますが
phpスクリプトの中にシングルクウォート'が含まれる場合に機能しません
実際にはphpスクリプトの中にシングルクウォート'が含まれているものに適用
しようとしているのでご提案の方法はそのままでは使えません
先の方法ではバックウォート`は使えませんが
phpではバックウォート`はあまり使わないので問題有りません
勿論`も'も使えたらベストです

phpスクリプトの中で'を使えるような方法があれば教えてください
よろしくお願いします

補足日時:2011/12/09 16:08
    • good
    • 0
この回答へのお礼

捕捉の追加:
例えば以下のものです(実際にはphp部分はもっと複雑です)

#!/bin/sh
phpscript=`cat <<'EOF'
$x=2;
$y=3;
$z=$x+$y;
echo '計算:';
echo "{$x}プラス{$y}イコール{$z}。\n";
exit;
EOF
`
php -r "$phpscript"


php内でshell_exec関数を使っているのでバッククウォート‘も使いたいのが本音です

お礼日時:2011/12/09 16:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!