Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Присвоение в скрипте t=~/temp  (Прочитано 719 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн A27

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Присвоение в скрипте t=~/temp
« : 05 Мая 2018, 22:27:11 »
Есть три файла:

1.sh
#!/bin/sh
mkdir ~/temp
unzip /media/share/new.zip -d ~/temp
export t=~/temp
sh 2.sh

2.sh
#!/bin/sh
[ -z $t ] && t=~/temp
startx
echo $t
cp -r $t ~/newtemp

в первом папка temp в /home/user создается без ошибок
во втором копирование не выполняется потому, что $t равно ~/temp то есть не раскрывается в /home/user/temp

Как решить проблему в файле 2.sh?

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Присвоение в скрипте t=~/temp
« Ответ #1 : 05 Мая 2018, 23:34:07 »
А зачем Вы сами себе создаете проблемы с раскрытием? Есть прекрасная системная переменная $HOME
не выполняется потому, что $t равно ~/temp
Это Вы откуда вывели? У Вас просто присвоение и никаких проверок...
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Re: Присвоение в скрипте t=~/temp
« Ответ #2 : 06 Мая 2018, 07:09:11 »
A27, наверное так startx &
Ибо все команды для выполнения будут ждать окончания работы Х.
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Axa-Ru

  • Гость
Re: Присвоение в скрипте t=~/temp
« Ответ #3 : 06 Мая 2018, 08:00:28 »
A27, есть такая фигня с тильдой в скриптах. Она там не работает.
Вместо тильды используйте переменную $HOME.

Дело в том что переменная "~" и литерал "~" неотличимы.

Если все таки ессть желание использовать тильду, то придется делать что то типа этого.
$ t=~/temp
$ eval t=$t

$ T='~/temp'
$ cp -r $T ./temp01
cp: cannot stat '~/temp': No such file or directory
$ eval T=$T
$ cp -r $T ./temp01
$
« Последнее редактирование: 06 Мая 2018, 08:11:46 от Axa-Ru »

Оффлайн A27

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Присвоение в скрипте t=~/temp
« Ответ #4 : 08 Мая 2018, 09:45:59 »
Это Вы откуда вывели? У Вас просто присвоение и никаких проверок
Отсюда:
echo $t
cp -r $t ~/newtemp
Для 1.sh:
/home/user/tempДля 2.sh
~/temp
cp: cannot stat '~/temp': No such file or directory


есть такая фигня с тильдой в скриптах. Она там не работает.
Ясно, спасибо. Буду во всех скриптах исправлять тильду на $HOME.

 

Страница сгенерирована за 0.082 секунд. Запросов: 23.