在脚本中创建一个具有变量名称的空文件

Abh*_*and 4 shell-script quoting files

我需要使用 shell 脚本创建一个空文件。文件名将通过检查与模式匹配的目录中的所有文件来确定,例如TEST.*,并附_END加到它,以便新文件看起来像TEST.2011_END. 让当前目录为$DIR. 所以我试过:

for file in $DIR/TEST.*
do
    touch $file_END  
done
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误。我也尝试替换touch $file_END为:

filename=$file_END  
touch $filename  
Run Code Online (Sandbox Code Playgroud)

但没有运气。我该怎么办?

Mat*_*Mat 10

语法是:

filename="${file}_END"
Run Code Online (Sandbox Code Playgroud)

或在您的代码中

touch "${file}_END"
Run Code Online (Sandbox Code Playgroud)

"报价是没有必要的,只要$file不具有任何空格或通配符的字符。

  • 除非您知道需要字段拆分和路径名扩展,否则始终在变量替换周围加上双引号。与试图弄清楚它们是否绝对必要相比,这是一种更简单、更安全的方法。 (3认同)