如何允许用户在 BASH 中定义自定义文件名?

如何允许用户在 BASH 中定义自定义文件名?

这是我在这里的第一篇文章。我只在 Udemy 上涉猎过 Python,也懂一些 HTML 和 CSS,但决定今晚试试 BASH。我试图使用变量编写一个简单的脚本,但它不起作用。该脚本应该打印一些文本,要求用户输入一些内容,然后在后续命令中使用该输入,如下所示:

#!bin/bash

echo "Please select a name for your new file (files are saved in txt by default)": && read $file
echo "Creating file "$file".txt on /home/linux/Desktop"
touch "/home/linux/Desktop/"$file".txt"
echo "Your new file has been created."
sleep 2
exit

结果是一个隐藏文件,我必须使用 ls -l 命令在终端中找到它,并且需要双引号才能删除(rm“ .txt”)。

我需要如何编写代码以便用户可以命名文件,计算机可以调用该变量名,将该变量名插入文件路径并且 touch 命令可以利用它来创建文件?

答案1

正确的语法是

read file

没有美元符号(-r除非您特别要求解析反斜杠,否则您可能还应该添加该选项)。

您的引用也关闭了;您一定要确保$file始终在双引号内,而不包含 shell 元字符的静态文本可以安全地保持不加引号(因此/path/to/"$file".txt或等效地"/path/to/$file.txt"

总体而言,更好的设计是将用户的选择作为命令行参数读取;然后可以轻松地从另一个脚本调用该脚本,并且用户可以使用 shell 便利,例如命令行历史记录和变量替换。

相关内容