URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 40781
[ Назад ]

Исходное сообщение
"shell программирование"

Отправлено Nickolay , 19-Фев-04 13:29 
здравтствуйте.

обясните плиз почему данный скрипт под linux'ом работает, а под freebsd нет. затык идет на стадии обявления массива...

#!/bin/sh

area2=( var1 var2)

for i in "${area2[@]}"
do
   echo "$i"
done


Содержание

Сообщения в этом обсуждении
"shell программирование"
Отправлено Brainbug , 19-Фев-04 14:09 
>здравтствуйте.
>
>обясните плиз почему данный скрипт под linux'ом работает, а под freebsd нет.
>затык идет на стадии обявления массива...
>
>#!/bin/sh
>
>area2=( var1 var2)
>
>for i in "${area2[@]}"
>do
>   echo "$i"
>done

area2="var1 var2"

for i in ${area2}
do
    echo $i
done


"shell программирование"
Отправлено Nickolay , 19-Фев-04 14:14 
спасибо большое.
где можно почитать про програмирование массивов в shell'е
и про отличия bsd и linux sh'ла?

"shell программирование"
Отправлено Brainbug , 19-Фев-04 14:26 
>спасибо большое.
>где можно почитать про програмирование массивов в shell'е
>и про отличия bsd и linux sh'ла?

V linux v bol6instve slu4ajev ispolzujetca bash. V *BSD obi4no sh. A voob6e est Advanced Bash Scripting Guide esli ne o6ibajus. No tam imenno pro bash.


"shell программирование"
Отправлено Amy , 19-Фев-04 15:45 
>спасибо большое.
>где можно почитать про програмирование массивов в shell'е
>и про отличия bsd и linux sh'ла?

Во фре sh - настоящий POSIX- и Korn- совместимый шелл, содержится там специально для скриптов, а в линуксе - это линк на тот же bash.

FreeBSD:
man sh
man builtins  <-- man builtins нужен именно FreeBSD-шный, а не линуксовый, там только про баш.

Если под рукой нет фри, то маны можно найти на http://www.freebsd.org


"shell программирование"
Отправлено vt , 19-Фев-04 15:58 
>Во фре sh - настоящий POSIX- и Korn- совместимый шелл, содержится там
>специально для скриптов, а в линуксе - это линк на тот
>же bash.

$man bash
...
If bash is invoked with the name sh, it tries to mimic the
startup  behavior  of historical versions of sh as closely
as possible, while conforming to  the  POSIX  standard  as
well.
...


"shell программирование"
Отправлено Amy , 19-Фев-04 16:11 
>>Во фре sh - настоящий POSIX- и Korn- совместимый шелл, содержится там
>>специально для скриптов, а в линуксе - это линк на тот
>>же bash.
>
>$man bash
>...
>If bash is invoked with the name sh, it tries to mimic
>the
>startup  behavior  of historical versions of sh as closely
>as possible, while conforming to  the  POSIX  standard  
>as
>well.
>...

Как видим, ничего не происходит автоматически. Чтобы писать переносимые скрипты, кроме названия оболочки надо ещё и избегать башизмов, т.е. специфических расширений баша, которые не совместимы ни с чем, кроме самого баша.


"shell программирование"
Отправлено lavr , 19-Фев-04 16:18 
>здравтствуйте.
>
>обясните плиз почему данный скрипт под linux'ом работает, а под freebsd нет.
>затык идет на стадии обявления массива...
>
>#!/bin/sh
>
>area2=( var1 var2)
>
>for i in "${area2[@]}"
>do
>   echo "$i"
>done

В какой-то OS врут выдавая Bash за Bourne-shell, предполагаю что это Linux
;)