Article View: pl.comp.os.linux
Article #907851Re: ssh, mkdir i zmienne w skrypcie
From: marrgol
Date: Sat, 26 Oct 2024 20:41
Date: Sat, 26 Oct 2024 20:41
30 lines
2825 bytes
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-mailReferences:
<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