シェルスクリプトを使用して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
、変数に代入するのではなく、引数を使用してコマンドを呼び出すことを意味します。=
x
x
echo
echo
を使用すると、任意のデータを表示することはできません。代わりにをprintf
使用してください。