自動バックアップを作成するための簡単なシェル スクリプトを作成しています。basename を使用してディレクトリのリストを作成しようとしています。このリストを解析して、リストから最初と最後のディレクトリを取得します。
問題は、ターミナルで basename を使用すると、すべてうまくいき、希望どおりのリストが表示されることです。例えば:
basename -a /var/*/
/var 内のすべてのディレクトリのリストを、名前の末尾に / を付けずに 1 行に 1 つずつ表示します。しかし、スクリプト内で使用して basename に変数を渡すと、変数が一重引用符で囲まれます。
while read line; do
dir_name=$(echo $line)
basename -a $dir_name/*/ > dir_list.tmp
done < file_with_list.txt
+x で実行する場合:
+ basename -a '/Volumes/OUTROS/backup/test/*/'
したがって、結果は私が必要とするものではありません。
さて、ベースネームの問題を回避するには無数の方法があるに違いないことはわかっていますが、それでは何も学べませんよね? ;)
一重引用符を取り除く方法は? ディレクトリ名にスペースが含まれている場合はどうなりますか?