Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

proste pytanie, ucze się basha

10 views
Skip to first unread message

Jivanmukta

unread,
Aug 31, 2019, 5:37:06 AM8/31/19
to
Piszę skrypt dirtyphp.sh w bashu. W skrypcie mam instrukcję
cp -R "$1" "$2"
gdzie $1 i $2 to parametry mojego skryptu.
Przy wywołaniu:
bash -x dirtyphp.sh "~/dirtyphp (gotowy)" "~/dirtyphp"
mam błąd cp, nie rozumie ~.
Jak mam to napisać, żebym mógł wywoływać mój skrypt także dla ścieżek ze
znakiem tyldy? Myślałem że powłoka rozwinie ~ i zostanie wykonane:
dirtyphp.sh "/home/robert/dirtyphp (gotowy)" /home/robert/dirtyphp

Kamil Jońca

unread,
Aug 31, 2019, 5:55:02 AM8/31/19
to
Strzelam (dawno basha nie używałem) że "" powodują, że tylda się nie
rozwija.

por. https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html#Double-Quotes

KJ
--
http://stopstopnop.pl/stop_stopnop.pl_o_nas.html
If you think nobody cares if you're alive, try missing a couple of car
payments.
-- Earl Wilson

Jivanmukta

unread,
Aug 31, 2019, 6:03:57 AM8/31/19
to
W dniu 31.08.2019 o 11:53, Kamil Jońca pisze:
>
> Jivanmukta <jivan...@poczta.onet.pl> writes:
>
>> Piszę skrypt dirtyphp.sh w bashu. W skrypcie mam instrukcję
>> cp -R "$1" "$2"
>> gdzie $1 i $2 to parametry mojego skryptu.
>> Przy wywołaniu:
>> bash -x dirtyphp.sh "~/dirtyphp (gotowy)" "~/dirtyphp"
>> mam błąd cp, nie rozumie ~.
>> Jak mam to napisać, żebym mógł wywoływać mój skrypt także dla ścieżek
>> ze znakiem tyldy? Myślałem że powłoka rozwinie ~ i zostanie wykonane:
>> dirtyphp.sh "/home/robert/dirtyphp (gotowy)" /home/robert/dirtyphp
>>
>
> Strzelam (dawno basha nie używałem) że "" powodują, że tylda się nie
> rozwija.
>
> por. https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html#Double-Quotes
>
> KJ
>
Masz rację. Potrzebuję zrobić tak, żeby można było wpisać i tyldę i
spację. Jak to osiągnąć?

Jivanmukta

unread,
Aug 31, 2019, 6:22:37 AM8/31/19
to
W dniu 31.08.2019 o 12:03, Jivanmukta pisze:
Acha, już wiem: ~/"dirtyphp (gotowy)"

Jivanmukta

unread,
Aug 31, 2019, 8:35:12 AM8/31/19
to
W dniu 31.08.2019 o 12:22, Jivanmukta pisze:
Mam jeszcze problem z instrukcją for. Iteruję po plikach w podanym w $1
katalogu, którego nazwa może zawierać spację, np.
"/home/robert/dirtyphp (gotowy)"
i dostaję osobno $f równe "(gotowy)/plik.php":

for f in $(find "$1" -name '*.php' -type f -print 2>/dev/null)

Jak to zrobić żeby mieć "/home/robert/dirtyphp (gotowy)/plik.php" a nie
"(gotowy)/plik.php"?

Szyk Cech

unread,
Aug 31, 2019, 10:04:01 AM8/31/19
to
> Mam jeszcze problem z instrukcją for. Iteruję po plikach w podanym w $1
> katalogu, którego nazwa może zawierać spację, np.
>   "/home/robert/dirtyphp (gotowy)"
> i dostaję osobno $f równe "(gotowy)/plik.php":
>
>   for f in $(find "$1" -name '*.php' -type f -print 2>/dev/null)
>
> Jak to zrobić żeby mieć "/home/robert/dirtyphp (gotowy)/plik.php" a nie
> "(gotowy)/plik.php"?

# Przed for:
IFS=$'\n'

Jivanmukta

unread,
Sep 8, 2019, 11:33:12 AM9/8/19
to
W dniu 31.08.2019 o 16:04, Szyk Cech pisze:
Dzięki, wszystko mi działa.

AMX

unread,
Dec 1, 2022, 5:08:07 PM12/1/22
to
Użycie zamiast ~/ $HOME także rozwiąże problem:

bash -x dirtyphp.sh "$HOME/dirtyphp (gotowy)" "$HOME/dirtyphp"

(czasami dobrze znać drugie rozwiązanie)



--
adres w rot13
Nyrxfnaqre Znghfmnx r-...@b2.cy
0 new messages