我做了以下Bash脚本(我是初学者)。

它会创建一个新目录programming并在其中创建一个名为main.cpp的文件,然后在nano中打开它以让我们对其进行编辑。保存后,它将对其进行编译,更改已编译文件的名称并执行它。之后,它将返回到根目录。

我想要的是每次执行此脚本时,都会自动为文件指定一个新名称,例如如果第一次执行的文件是main.cpp
再次执行时,它应该创建一个名为main_1.cpp的文件,然后创建一个main_2.cpp的文件,依此类推...

我可以使用for循环或if-else语句吗?

这是脚本:

mkdir programming
cd programming
nano main.cpp
g++ main.cpp
mv a.out main_executable
./main_executable
cd

最佳答案

mktemp command可靠且可靠地执行此操作。

特别要注意的是,它避免了天真的实现过程中的两个严重的安全漏洞-可预测的文件名和symlink攻击。

#!/bin/sh
t=$(mktemp -d programmingXXXXXXX) || exit 127
trap 'rm -rf "$t"' HUP INT QUIT TERM  # Clean up if interrupted
cd "$t"
nano main.cpp
g++ main.cpp -o main_executable && ./main_executable
# cd  <- no point in that; the parent shell's cwd will not have been affected


您可能希望脚本在末尾打印生成的目录的名称,和/或将其更改为生成文件而不是目录。

关于linux - 如何创建新文件并自动选择其名称?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28904838/

10-16 20:19
查看更多