リダイレクト後にファイルが生成されず、「cp:計算できません」というエラーが表示される

リダイレクト後にファイルが生成されず、「cp:計算できません」というエラーが表示される

以下のbashスクリプトはファイルが存在するかどうかを確認し、そうでない場合はファイルを生成してから簡単なコードを記述します。一度はうまくいきましたが(理由はわかりません)、何かを変更したようで、これ以上機能しなくなり、エラーがどこにあるかがわかりません。

#...

template_file="~/mytest_template.c";

if [[ -z $template_file ]]; then
   echo -e "#include <stdio.h>\n#include <stdlib.h>\n\n\nint main(int argc, char**argv){\n\n\t\n\nreturn 0;\n}" > ~/mytest_template.c;
fi

#sleep 0.5; ---> I tried this too.

cp ~/mytest_template.c mytest.c;

私が得るエラーは次のとおりです。 cp: cannot stat '/home/username/mytest_template.c': No such file or directory

ありがとうございます。

ベストアンサー1

if [[ -z $template_file ]]; then

この-z演算子は文字列が空であるかどうかをテストします。ここで値はtemplate_file割り当てたばかりなので、null ではありません。したがって、内部コマンドはif実行されません。

スクリプトが実行される前にファイルが存在しない場合、スクリプトの実行時にファイルは存在しませんcp

ここで何をテストしたいのかわかりませんが、ファイルが存在しない場合に備えてファイルを生成するには! -f $filename-f!

また、割り当てでは、チルダは拡張されませんが、引用符内にあるため、そのまま残ります。

template_file="~/mytest_template.c";

後続のリダイレクトやコマンドはcp変数を使用しないため、問題はありません。

だから、

template=~/mytest_template.c
final=~/mytest.c
if [[ ! -f $template ]]; then
    echo "..." > "$template"
fi
cp "$template" "$final"

おすすめ記事