“kan binair bestand niet uitvoeren” wanneer het proberen om een ​​shell script op linux

Ik ben erg nieuw voor linux en shell scriprting.
Ik ben op zoek naar een shellscript van secure shell (ssh) op linux hand van de volgende opdrachten uit te voeren:

chmod +x path/to/mynewshell.sh
sh path/to/mynewshell.sh

krijg ik deze fout:

path/to/mynewshell.sh: path/to/mynewshell.sh: cannot execute binary file.

Geprobeerd met deze opdracht:

bash path/to/mynewshell.sh

Ik krijg de zelfde fout.

Geprobeerd met deze opdracht: su - myusername sh path/to/mynewshell.sh
Het vraagt ​​om mijn wachtwoord en geeft me deze fout:. no such file or directory

1. gevolge van katten- -v path / to / mynewshell.sh is:
^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ ^ @ Rscript “$ dir” /diver_script.R
done

2.When geprobeerd ‘minder pad / naar / mynewshell.sh’ Ik heb dit op mijn terminal:

#!/bin/bash/Rscript^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
for dir in /path/to/* ; do 
^@^@^@^@^@^@^@^@Rscript "$dir"/myRscript.R
done

3.Wanneer liep ik file pad / naar / mynewshell.sh: ik kreeg deze “Bourne-Again shell script tekst uitvoerbaar”

Gelieve te geven een advies over hoe ik kan proberen het uitvoeren van de shellscript.


Antwoord 1, Autoriteit 100%

chmod -xverwijdert uitvoering toestemming van een bestand. Doe dit:

chmod +x path/to/mynewshell.sh

en voer het uit met

/path/to/mynewshell.sh

Als de fout rapport zegt, je script is niet echt een script, het is een binair bestand.


Antwoord 2, Autoriteit 18%

Ik kreeg de zelfde fout runnen van mijn shell script door een bash tolk in PowerShell. Ik rende dos2unix myscript.shop de shell script, en nu loopt ok.


Antwoord 3

Vanuit een voorgesteld tweevoud:

run_me.sh.xz: run_me.sh.xz: cannot execute binary file

Dit is omdat het bestand wordt gecomprimeerd, zoals aangegeven door de .xzextensie. U moet de compressie te verwijderen voordat het bestand kan worden gebruikt.

xz -d ./run_me.sh.xz
chmod +x ./run_me.sh  # probably not necessary if you already did that before
./run_me.sh

Andere compressieschema’s zoals gzip(.gzextensie), bzip2(.bz2extensie) enz gedragen op dezelfde manier; je hoeft alleen de naam van het commando om uncompress het, dat is van gewoonlijk natuurlijk makkelijk om google te weten.


Antwoord 4

Als iemand anders met het probleem dat ik had.

ik probeerde om een ​​16 bit unicode tekst bestand uit te voeren omgezet in een shell script, dit niet werkt en alle 16 bit Unicode-tekstbestanden hebben een 0xFFFE marker aan het begin het maken van mac os niet als het bestand en dit geeft de “kan binair bestand niet uitvoeren” fout.

Open het tekstbestand klikt u op “Format” aan de top, naar beneden naar “platte tekst” klik erop.

open uw type terminal chmod 777 /path/to/file.sh

put in terminal: /path/to/file.shom het uit te voeren


Antwoord 5

Dat script is gewoon geen shellscript.
Een shellscript is meestal leesbaar en bevat shellcode.
De uitvoer die je cat-opdracht laat zien, ziet er inderdaad uit alsof het een soort binair bestand is.
Zoals sommigen opmerken, kan dit komen door een probleem met bestandsconversie bij het kopiëren, maar het lijkt mij meer op een echt binair bestand.

Je kunt controleren hoe het wordt geïdentificeerd met het bestandscommando, dus:

file path/to/mynewshell.sh

Begin gewoon met een schoon script en herschrijf de code, het lijkt erop dat je gewoon wat R-scripts in een map wilt uitvoeren?

Zorg ervoor dat de R-scripts naar de juiste R-scriptbeul verwijzen.

Other episodes