Předání parametru v Bashi

Kolemjdoucí

Předání parametru v Bashi
« kdy: 23. 01. 2015, 00:06:07 »
Ahoj, proč mi tohle nefunguje ?

soubor
/home/script1
#!/bin/sh
. /home/script "Param1" "Param2"

soubor
/home/script2
#!/bin/sh
echo "$1 $2";


Díky za radu


ttt

Re:Shell/Bash - jak vypsat předaný parametr
« Odpověď #1 kdy: 23. 01. 2015, 00:20:03 »
/home/script vs /home/script2 je překlep? Pokud to opravím, funguje mi to.

Kolemjdoucí

Re:Shell/Bash - jak vypsat předaný parametr
« Odpověď #2 kdy: 23. 01. 2015, 00:27:51 »
Citace od: ttt kdy 23. 01. 2015, 00:20:03
/home/script vs /home/script2 je překlep? Pokud to opravím, funguje mi to.

je to pouze tady překlep. jinak mi to nefunguje, nvíc mi ani nefunguje místo "." "source" :-(

Kolemjdoucí

Re:Shell/Bash - jak vypsat předaný parametr
« Odpověď #3 kdy: 23. 01. 2015, 00:37:56 »
|Tobě to funguje, jelikož to asi spouštíš, ne ?
./home/script2 "Param1" "Param2"

ale ja ten soubor sourcuji
. /home/script2 "Param1" "Param2"

za tečkou je mezera ;-)

Sten

Re:Shell/Bash - jak vypsat předaný parametr
« Odpověď #4 kdy: 23. 01. 2015, 00:41:45 »
Citace od: Kolemjdoucí kdy 23. 01. 2015, 00:37:56
|Tobě to funguje, jelikož to asi spouštíš, ne ?
./home/script2 "Param1" "Param2"

ale ja ten soubor sourcuji
. /home/script2 "Param1" "Param2"

za tečkou je mezera ;-)

No tak třeba protože sourcování není spouštění a tak nepředává parametry?


tib

Re:Předání parametru v Bashi
« Odpověď #5 kdy: 23. 01. 2015, 10:53:33 »
/bin/sh  podle vseho neni uplne tak bash  ;)
Vyzkousej /bin/bash

Kit

Re:Předání parametru v Bashi
« Odpověď #6 kdy: 23. 01. 2015, 11:09:58 »
Citace od: Kolemjdoucí kdy 23. 01. 2015, 00:06:07
Ahoj, proč mi tohle nefunguje ?

soubor
/home/script1


Do adresáře /home nemám právo zápisu a stejně tam skripty nepatří.

Proč používáš /bin/sh? Zkusil jsi už někdy /bin/bash nebo ještě lépe /bin/dash?

Kolemjdoucí

Re:Předání parametru v Bashi
« Odpověď #7 kdy: 23. 01. 2015, 12:18:27 »
Citace od: Kit kdy 23. 01. 2015, 11:09:58
Do adresáře /home nemám právo zápisu a stejně tam skripty nepatří.
To je fakt pravda, sakra, to mi nedošlo. Opraveno ale stejně to nefunguje, asi to nekde :-( jak tady někdo už psal :-(
A poradíš kam patří vytvořené scripty ?

Citace od: Kit kdy 23. 01. 2015, 11:09:58
Proč používáš /bin/sh? Zkusil jsi už někdy /bin/bash nebo ještě lépe /bin/dash?
source nefunguje ani s /bin/bash. Co je to prosím /bin/dash ? Díky

tib

Re:Předání parametru v Bashi
« Odpověď #8 kdy: 23. 01. 2015, 13:25:29 »
Hele... 

1/ potrebujes to opravdu spoustet pres . (source) ?
2/ nefunguje to =  presne co jak?
3/ nechce se mi verit, ze by to v bashi nefungovalo ;-)  viz. man bash


Jimm

Re:Předání parametru v Bashi
« Odpověď #9 kdy: 23. 01. 2015, 13:39:10 »
Sten to už psal, jste natvrdli? Source není execute.

Kit

Re:Předání parametru v Bashi
« Odpověď #10 kdy: 23. 01. 2015, 13:45:09 »
Citace od: Kolemjdoucí kdy 23. 01. 2015, 12:18:27
A poradíš kam patří vytvořené scripty ?

Patří do ~/bin/

Citace
source nefunguje ani s /bin/bash. Co je to prosím /bin/dash ? Díky

Dash je očesaný Bash, aby byl rychlejší.

Příkaz source považuje string "#!/bin/bash" za komentář.

TTT

Re:Předání parametru v Bashi
« Odpověď #11 kdy: 23. 01. 2015, 13:58:23 »
Na první pohled jsem nenašel nic o tom, že by source měl parametry. Na mém shellu je bere, zřejmě tedy záleží na konrkétním shellu. To patrně vede k oné natvrdlosti.

/tmp » cat script1
#!/bin/sh
. /tmp/script2 "Param1" "Param2"
------------------------------------------------------------
/tmp » cat script2
#!/bin/sh
echo "$1 $2";
------------------------------------------------------------
/tmp » . /tmp/script1
Param1 Param2

tib

Re:Předání parametru v Bashi
« Odpověď #12 kdy: 23. 01. 2015, 14:00:37 »
man bash  ;)

.  filename [arguments]
source filename [arguments]
    Read and execute commands from filename in the current shell environment and return the exit
    status of the last  command  executed  from  filename. If filename does not contain a slash, filenames
    in PATH are used to find the directory containing filename.  The file searched for in PATH need not be exe‐
    cutable.  When bash is not in posix mode, the current directory is searched if no file is found in PATH. 
    If the sourcepath option to the shopt  builtin command  is turned off, the PATH is not searched. If any arguments
    are supplied, they become the positional parameters when filename is executed.  Otherwise the positional parameters
    are unchanged.  The return status is the status of the last command exited within the script
    (0 if no commands are exe‐cuted), and false if filename is not found or cannot be read.