基本问题:在 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"
希望这是有道理的。引号的功能类似于圆括号。
我想用当前存在于特定目录中的每个 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"
希望这是有道理的。引号的功能类似于圆括号。