Allt från Computex 2023
Permalänk
Medlem

Problem med bash-script

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?

Visa signatur

HOHOHO

Permalänk

Re: Problem med bash-script

#!/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:

if test $yn = "y"; then echo "hello"; fi

Permalänk
Medlem

Tips, för att se vad scriptet gör lägg på " -x" på första raden så att den börjar med:

#!/bin/bash -x

Visa signatur

Kriga mot min brute: http://gunnard.se.mybrute.com om du vågar :D