11

投稿変数を送信しようとしている場所でbashスクリプトを書いていますが、wgetはURLENCODEDではないため、複数のURLとして処理しています...これが私の基本的な考え方です

MESSAGE='I am trying to post this information'
wget -O test.txt http://xxxxxxxxx.com/alert.php --post-data 'key=xxxx&message='$MESSAGE''

エラーが発生し、alert.phpがpost変数を取得していないことに加えて、かなりマッシュが言っています

解決できません解決できません解決できません..などを試してみてください。

上記の私の例は、単純なsudoの例ですが、URLエンコードできれば合格すると思います。たとえば、次のようなphpを試してみました。

MESSAGE='I am trying to post this information'
MESSAGE=$(php -r 'echo urlencode("'$MESSAGE'");')

しかし、phpエラーが発生します..何かアイデアはありますか?PHPが実行せずに$MESSAGEで変数を渡すにはどうすればよいですか?

4

3 に答える 3

16

CentOSでは、追加のパッケージは必要ありません。

python -c "import urllib;print urllib.quote(raw_input())" <<< "$message"
于 2017-02-09T08:10:57.667 に答える
10

$MESSAGE二重引用符で囲んだいので、シェルはそれを別々の単語に分割せず、引数としてPHPに渡します。

ENCODEDMESSAGE="$(php -r 'echo rawurlencode($argv[1]);' -- "$MESSAGE")"
于 2012-08-09T03:39:40.487 に答える
5

Python 3およびファイルからの複数行入力に対するRockalliteの非常に役立つ回答を拡張します(今回はUbuntuですが、それは問題ではありません)。

cat any.txt | python3 -c "import urllib.parse, sys; print(urllib.parse.quote(sys.stdin.read()))"

これにより、ファイルのすべての行が1つのURLに連結され、改行が。に置き換えられ%0Aます。

于 2019-05-27T07:54:12.000 に答える