2つの変数でファイル名を作成しようとしています。
エラーメッセージは次のとおりです。
touch: cannot touch `/root/tinstalls/2--06/06/15': No such file or directory
2--06/06/15 19:54
コードは次のとおりです。
tdate=$(date '+%D %R')
tfile=$(echo "${toadd}--${tdate}")
touch /root/tinstalls/${tfile}
echo $tfile
ディレクトリがそこにあります。
ベストアンサー1
@Theophrastusは正しい考えを持っています。~によるとPOSIX「[ファイル]名を構成する文字は、任意の文字値セットから選択できます。スラッシュ文字を除くと null バイト"(強調)。つまり、各文字列は〜サイスラッシュ2個(空の文字列を除外)は別のディレクトリであり、できない名前にスラッシュを含むファイルを作成します。したがって、これを試みると、touch /root/tinstalls/2--06/06/15
システムは15
絶対パスを使用してディレクトリにファイルを作成しようとします/root/tinstalls/2--06/06
。
この問題を修正する簡単な方法は、ファイル名のすべてのスラッシュを下線で置き換えることです。
touch "/root/tinstalls/${tfile//\//_}"