我做了以下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/