AIXではkshを使用しており、変数(例えばvar1=sanySAN
)がvar2=SANYsa%$3
英数字であることを確認したいと思います。
ここではvar1
代わりに英数字ですvar2
。[a-z][A-Z][0-9]
orを使用できることを知っていますが、[:alnum:]
方法がわかりません。
これを確認する必要がありますか?
if [[ var == [:alnum:]* ]]
then
echo "yes"
else
echo "no"
fi
いくつかの方法を試しましたが失敗しました。
ベストアンサー1
フロント:
is_alnum() {
case $1 in (*[![:alnum:]]*|"") false;; esac
}
それから:
$ is_alnum 123 && echo yes
yes
$ is_alnum % || echo no
no
mksh
上記の方法を使用して失敗した唯一のシェルです。
また、変数に有効な文字を形成しない一連のバイトが含まれている場合、この方法は機能しません。
yash
有効なUnicode文字としてのみ機能するため、エラーを報告する唯一の文字です。
$ is_alnum $'A\xe9B'
yash: cannot convert the argument `A�B' into a wide character stringyash: the argument is replaced with an empty string
修正する
mksh
R56に追加および変更された文字クラスR56c。