SOを検索した結果、次の文字列を大文字として使用することが機能することがわかりました。
str="Some string"
echo ${str^^}
しかし、コマンドライン引数で同様の操作を試みましたが、次のエラーが発生しました。
試験を終えた
#!/bin/bash
## Output
echo ${1^^} ## line 3: ${1^^}: bad substitution
echo {$1^^} ## No error, but output was still smaller case i.e. no effect
どうすればいいですか?
答え1
試す構文は、str^^
Bash 4.0以降で使用できます。バージョンが古い可能性があります(または明示的にスクリプトを実行しましたsh
)。
この試み:
str="Some string"
printf '%s\n' "$str" | awk '{ print toupper($0) }'
答え2
echo "lowercase" | tr a-z A-Z
出力:
LOWERCASE
答え3
それがあなたが使うすべてでtr
はない場合は注意してください。A-Z
他のロケールでは失敗し、sとbash(v4+)のみが'[:lower:]' '[:upper:]'
機能します。awk
toupper
$ str="abcåäö"
$ echo "$str" | tr '/a-z/' '/A-Z/'
ABCåäö
$ echo "$str" | LC_ALL=sv_SE tr '[:lower:]' '[:upper:]'
ABCåäö
$ echo "$str" | awk '{print toupper($0)}'
ABCÅÄÖ
$ echo ${str^^} # Bash 4.0 and later
ABCÅÄÖ
$ STR="ABCÅÄÖ"
$ echo ${STR,,}
abcåäö
答え4
文字列を引用してください。
echo "${str^^}"