1 Laatst bewerkt door guidovanh (05 Dec 2017 14:17:01)

Onderwerp: waarom werkt dit script niet?

Ik probeer een script te schrijven (ben een echte beginneling in scripten) om een deel van de installatie van Nextcloud te automatiseren. Daarvoor heb ik een shellscript geschreven.
Het shellscript heb ik uitvoerbaar gemaakt (chmod +x apps.sh). Toch krijg ik een foutmelding:

-bash: ./apps.sh: /bin/bash^M: bad interpreter: No such file or directory

Dit is mijn shellscript tot nu toe:

app01 = calendar;
app02 = direct_menu;
app03 = mail;
app04 = contacts;
app05 = caniupdate;
app06 = socialsharing_facebook;
app07 = socialsharing_email;
app08 = socialsharing_googleplus;
app09 = ownbackup;
app10 = files_frommail;
app11 = quota_warning;
app12 = fbsync;

for x in 01 02 03 04 05 06 07 08 09 10 11 12
do
  versienummer=$(curl -s https://api.github.com/repos/nextcloud/app$x/releases/latest | grep 'tag_name' | cut -d\" -f4 | sed -e 's|v||g');
  wget -q https://github.com/nextcloud/app$x/releases/download/v$versienummer/app$x.tar.gz
  tar -zxf /var/www/html/apps/app$x.tar.gz -C /var/www/html/apps
  rm /var/www/html/apps/app$x.tar.gz
  sudo -u www-data php /var/www/html/occ app:enable app$x
done

Wie kan mij zeggen wat ik fout doe?

Kan ik die eerste 12 regels ook weglaten en de script beginnen met

for x in calender direct_menu mail contacts caniupdate socialsharing_facebook socialsharing_email socialsharing_googleplus ownbackup files_frommail quota_warning fbsync

Vriendelijke groet,
Guido

Re: waarom werkt dit script niet?

Ik zou altijd klein beginnen. Dus eerst variabelen declareren en ze echo'en of de waarden in je for loop echo'en. Dan kun je stap voor stap bepalen waar het misgaat. Ik script zo weinig dat de meeste problemen in syntax en quotes zitten.

Dit deel werkt in ieder geval alvast:

for x in calender direct_menu mail contacts caniupdate socialsharing_facebook socialsharing_email socialsharing_googleplus ownbackup files_frommail quota_warning fbsync;
do
echo $x
echo https://api.github.com/repos/nextcloud/$x/releases/latest
done
exit 0

Re: waarom werkt dit script niet?

De volgende stap is de bestanden downloaden. Als dat werkt vervolgens uitpakken, de archieven verwijderen en de apps inschakelen.

4

Re: waarom werkt dit script niet?

Op de eerste regel van je script mist kenlijk een shebang

#!/bin/sh

for x in aap noot mies wim zus jet; do
 echo $x
done
Pascal's Blobfree Homepage
Een dag geen NedLinux is een dag niet geleefd

Re: waarom werkt dit script niet?

Behalve de bovenstaande opmerkingen, is je script zo te zien niet opgeslagen met UNIX line-endings (\n), maar met DOS line-endings (\r\n).
Aldus de verwijzing naar ^M in de foutmelding.

Re: waarom werkt dit script niet?

http://www.tldp.org/LDP/Bash-Beginners- … Guide.html

ACAB: All computers are broken. https://medium.com/message/everything-i … e5f33a24e1 "I've decided that you need gray hair and hemorrhoids to be a consultant.
The gray hair makes you look distinguished & the hemorrhoids make you look concerned."