シェルスクリプト:ワイルドカードでディレクトリを指定した際、正式なディレクトリ名を取得したい
【動作環境】:Linux(Ubuntu20.04)
フォルダ
data
|--copy.sh
|--ABC
| |--ABC121
| |--ABC122
| |--ABC123
| |--ABC131
| |--ABC132
| |--ABC133
【期待する動作】:
for文で、ディレクトリの5文字目を判定して表示する。
dir2=ABC121, vowel=a
dir2=ABC122, vowel=i
dir2=ABC123, vowel=u
:
:
のように表示させたい。
【コード内容】:
bash
1for dir1 in data;do 2 for dir2 in ${dir1}*;do 3 five="${dir2:4:1}" 4 if [ "$five" = "1" ];then 5 vowel="a" 6 elif [ "$five" = "2" ];then 7 vowel="i" 8 elif [ "$five" = "3" ];then 9 vowel="u" 10 fi 11 echo dir2="${dir2}", vowel="${vowel}" 12 done; 13 done; 14done;
このとき、表示された結果は以下のようになった。
dir2=ABC*, vowel=
dir2=ABC*, vowel=
dir2=ABC*, vowel=
:
:
(つまりvowelは何も代入されていなかった。)
【試したこと】
ワイルドカードを から?に変更しましたが、
dir2=ABC???
となりました。
また、ディレクトリ名が ABC となってしまうだけで、実行自体にはなんのエラーもありません。
正式なディレクトリ名を取得する方法を教えていただきたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/18 03:44