Försöker att lära mig lite om bash-script. Har skrivit ihop ett program och förstår inte varför det inte fungerar.
#!/bin/bash
echo -n "Enter files to be copied: "
read files
echo -n "Enter dir to copy files to: "
read dir
mkdir $dir
echo -n "Are yor sure to copy files $files to directory $dir?(y/n): "
read yn
if [ $yn="y" ]; then
cp $files $dir
echo "files $files have been copied to directory $dir"
else
echo "Copying aborted"
fi
Oberoende av vad jag skriver in på raden y/n så går den in i if-satsen. Vad gör jag för fel?
#!/bin/bash
echo -n "Enter files to be copied: "
read files
echo -n "Enter dir to copy files to: "
read dir
mkdir $dir
echo -n "Are yor sure to copy files $files to directory $dir?(y/n): "
read yn
if [ $yn = "y" ]; then
cp $files $dir
echo "files $files have been copied to directory $dir"
else
echo "Copying aborted"
fi
Det är viktigt att syntaxen för tester är korrekt. Ett annat alternativ är att skriva
if [[ $yn == "y" ]]
(Fungerar bara i Bash...)
Lite vidare information: I gamla bourne shell så var "[" en symlänk till ett program under namnet "test". Du kan testa det själv: