URLデコードシェルスクリプト

URLデコードシェルスクリプト

シェルスクリプトを使用してURLデコードされた文字列を変数に保存する方法

#!/bin/sh
alias urldecode='python -c "import sys, urllib as ul;print ul.unquote_plus(sys.argv[1])"'
str="this+is+%2F+%2B+%2C+.+url+%23%24coded"

decoded = ${urldecode $str}
echo $decoded

デコードされた文字列をdecodedという変数に保存しようとしています。

ベストアンサー1

#!/bin/sh -
urldecode() {
  python -c "import sys, urllib as ul;print ul.unquote_plus(sys.argv[1])" "$1"
}
str="this+is+%2F+%2B+%2C+.+url+%23%24coded"
decoded=$(urldecode "$str"}
printf '%s\n' "$decoded"

それは:

  • 動作は保証されていないため、スクリプトでエイリアスを使用しないでください(一部のsh実装(bashなど)は、非対話型の場合はエイリアスを無視します)。
  • 変数を参照してください。シェルのスプリット+グローブ演算子は変数を引用符解除します。
  • コマンドの出力を置き換える演算子は次のとおりです。$(...)
  • Bourneに似たシェルの変数割り当て構文は、周囲のスペースを許可しません=echo = xこれはecho、変数に代入するのではなく、引数を使用してコマンドを呼び出すことを意味します。=xxecho
  • echoを使用すると、任意のデータを表示することはできません。代わりにをprintf使用してください。

おすすめ記事