fundamentele vraag: met behulp van een variabele inhoud als mapnaam in Linux

stemmen
1

Ik wil er een nieuwe map met de naam van elke zip-bestand dat momenteel bestaat in een bepaalde map, in een andere. Ik heb een 'lus' voor dit doel geschreven:

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

maar het creëert een map met de naam $ {b} voor de eerste ronde en fouten maken voor de volgende degenen. Kunt u mij vertellen wat ik moet doen?

De vraag is gesteld op 13/01/2020 om 23:50
bron van user
In andere talen...                            


1 antwoorden

stemmen
1

Je zet je de variabele in eenvoudige citaten, zal er voorgrond '$ {b}' nooit worden geïnterpreteerd. Probeer dit:

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

Geen behoefte aan variabelen $ bestanden en $ b.

Om samen te vatten, laten we zeggen var=3,

  • echo "$var" wordt weergegeven 3
  • echo '$var' wordt weergegeven $var
  • echo "'$var'" wordt weergegeven '3'
  • echo '"$var"' wordt weergegeven "$var"

Hopelijk dit zinvol is. Quotes functioneren als haakjes en beugels.

antwoordde op 13/01/2020 om 23:52
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more