基本问题:在 Linux 中使用变量内容作为目录名称

basic question: using a variable content as directory name in Linux

我想用当前存在于特定目录中的每个 zip 文件的名称创建一个新目录,在另一个目录中。为此我写了一个'for loop':

files=NL*.zip
for a in $files; do 
b=echo $a; 
sudo mkdir '/home/shokufeh/Desktop/normals/T1/"${b}"';
done

但它为第一轮创建了一个名为 ${b} 的目录,并为下一轮出错。 你能告诉我应该怎么做吗?

您将变量放在单引号中,因此永远不会解释“${b}”。试试这个:

for a in NL*.zip; do 
  sudo mkdir "/home/shokufeh/Desktop/normals/T1/${a}";
done

不需要变量 $files 和 $b。

总而言之,假设 var=3

  • echo "$var"会显示3
  • echo '$var' 会显示 $var
  • echo "'$var'"会显示'3'
  • echo '"$var"' 会显示 "$var"

希望这是有道理的。引号的功能类似于圆括号。