🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.os.linux
Article #907851

Re: ssh, mkdir i zmienne w skrypcie

#907851
From: marrgol
Date: Sat, 26 Oct 2024 20:41
30 lines
2825 bytes
On 2024-10-26 at 01:18 Marcin Debowski wrote:
>> W poleceniu 'ZM1=~/foo echo $ZM1' za $ZM1 shell podstawia znaną sobie starą
>> wartość ZM1 z bieżącego środowiska (albo pustą, jeśli ZM1 nie istnieje)
>> _zanim_ wykona całe polecenie.  Natomiast samodzielne przypisanie zmiennej
> 
> Ok, chyba coś zaczyna do mnie docierać... 
> A we fragmencie bash -c 'echo $ZM1' 
> 
> ...nie podstawia bo traktuje jako 'string'. Ale nowa powłoka z 
> właściwości opcji -c traktuje ten sam string jako dalsze argumenty (nie 
> wywala command not found). Tak?

Prawie.  String objęty apostrofami to jest jeden argument, czyli
w nomenklaturze shella jedno słowo (token).  Opcja -c nakazuje
bashowi potraktować _pierwszy_ argument -- w tym przypadku cały ten string
-- jako polecenie do wykonania.  Mówiąc obrazowo nakazuje mu: przepisz sobie
tekst pierwszego argumentu do linii poleceń i zrób to samo co robisz kiedy
użytkownik interaktywnie wpisze linię tekstu i wciśnie [Enter] -- rozwiń/
zinterpretuj tę linię i wykonaj.

Jeśli argumentów (słów/tokenów) jest więcej, to bash przypisze drugi
i następne zmiennym pozycyjnym $0, $1 itd. w swoim środowisku, więc można
je wykorzystać już w tym poleceniu powstającym z pierwszego argumentu
(coś à la przekazywanie parametrów funkcjom w językach programowania), np.:

$ ZM1=STARA
$ ZM1=NOWA bash -c 'echo ZM1=\"$ZM1\" \$0=\"$0\" \$1=\"$1\" \$2=\"$2\"
\$3=\"$3\"' $ZM1 ALA 'MA KOTA'
ZM1="NOWA" $0="STARA" $1="ALA" $2="MA KOTA" $3=""
$
Technical Details
Message-ID: <vfjk61$3qs7o$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
References: <vf5qru$104b1$1@dont-email.me> <vf6mr0$12k1i$1@dont-email.me> <d5254b1af5d5f6a28da5bcc2ef5875da506799d4@i2pn2.org> <vf80p2$1e0d2$1@dont-email.me> <bd466805-fb4a-4dca-a413-354b971319a0@hooterville.invalid> <vfbuku$28ohs$1@dont-email.me> <SygSO.105349$Xx4a.49690@fx11.ams1> <vfd94d$2iuhj$1@dont-email.me> <MGVSO.43423$FIff.12054@fx02.ams1>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: marrgol <marrgol@address.invalid>
Newsgroups: pl.comp.os.linux
Subject: Re: ssh, mkdir i zmienne w skrypcie
Date: Sat, 26 Oct 2024 22:41:37 +0200
Organization: A noiseless patient Spider
Lines: 32
Message-ID: <vfjk61$3qs7o$1@dont-email.me>
References: <vf5qru$104b1$1@dont-email.me> <vf6mr0$12k1i$1@dont-email.me> <d5254b1af5d5f6a28da5bcc2ef5875da506799d4@i2pn2.org> <vf80p2$1e0d2$1@dont-email.me> <bd466805-fb4a-4dca-a413-354b971319a0@hooterville.invalid> <vfbuku$28ohs$1@dont-email.me> <SygSO.105349$Xx4a.49690@fx11.ams1> <vfd94d$2iuhj$1@dont-email.me> <MGVSO.43423$FIff.12054@fx02.ams1>
MIME-Version: 1.0
Injection-Date: Sat, 26 Oct 2024 22:41:37 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="36bd25708d4803204f07642dac65efa9"; logging-data="4026616"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18haqiFmPztxbSWvUjFb0KC"
User-Agent: Mozilla/5.0 (rv:102.0) Gecko/20100101, Betterbird/102
Cancel-Lock: sha1:YMBZJrE8MIZl32nFaQ91zSvV3WA=
In-Reply-To: <MGVSO.43423$FIff.12054@fx02.ams1>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit