LINUX.ORG.RU

if [ $t == 'linux' ] а не [$t == 'linux']

iron ★★★★★
()

Кстати, [ это отдельная программа а не оператор оболочки:

$ which [
/bin/[
$ ldd `which [`
/bin/[:
	libc.so.7 => /lib/libc.so.7 (0x1bd60cd6b000)
	[vdso] (0x7ffffffff000)

Вот теперь живите с этим)

iron ★★★★★
()
Ответ на: комментарий от krasnh

Спасибо всем!

А где можно найти нормальный туториал по скриптам sh? По инету обычно для #!/bin/bash , а мне бы хотелось именно для sh. Или они не сильно отличаются? Сервис проверки ошибок в скриптах добавил в закладки , шикарный сайт. Извините за нубские вопросы.

tiresa
() автор топика
Ответ на: комментарий от tiresa

ABS

Если вернуться к вашему скрипту, то в некоторой степени, потенциальная точка отказа уже в первой строке, «шабанг».

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)

Ох помню как у меня подгорало от того что в bash нельзя ставить лишние пробелы…

A="string" # valid
A = "string" # invalid
skyman ★★★★
()
Ответ на: комментарий от skyman

Ох помню как у меня подгорало

Может потому что думать не пробовали? Есть языки, где синтаксис разбавлен по представлению авторов для «наглядности» и прочей билиберды. Там действительно можно подгореть от этого. Но если язык предназначен для вызова команд с аргументами, то пробелы и есть основа этого языка, а не лишняя сущность от которой можно подгорать.

vodz ★★★★★
()
Ответ на: комментарий от iron

Кстати, [ это отдельная программа а не оператор оболочки:

И правда…. екарный бабай! Как теперь жить!?!? :-)))

alex_sim ★★★★
()
Ответ на: комментарий от iron

Тем не менее баш по умолчанию использует именно shell builtin. Ради интереса можете удалить /usr/bin/[ и попробовать сравнить пару строк

$ trash /usr/bin/\[
$ [ 'abc' == '123' ]
$ echo $?
1  
$ [ 'abc' == 'abc' ]
$ echo $?
0  
GLaDOS
()
Ответ на: комментарий от GLaDOS

Кстати, сказать, мне как-то привычнее читать и писать test, а не скобочки:

if test -f "$filename" ; then
   ...
fi
wandrien ★★★
()
Ответ на: комментарий от GLaDOS

Тем не менее баш по умолчанию использует именно shell builtin.

Вот только надо понимать для чего и что из этого следует. Ну так вот, встроенное '[' в отличии от многих других команд совсем ничего другого не даёт кроме скорости выполнения скриптов. Ибо возможность работы в системе без одной из самой основной команды без которой и юникс не юникс и вряд ли бы родился bash — преимущество так себе, там где экономим на спичках вдруг может оказаться, что оно и не встроенное (в busybox — оно как раз опционально).

vodz ★★★★★
()
Ответ на: комментарий от tiresa

А где можно найти нормальный туториал по скриптам sh?

Шелл скрипты шикарно пишет ChatGPT и расписывает всё по шагам. Хз насколько он различает шелл от баша.

kvpfs ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.