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

Исходное сообщение
"Правильное написание скрипта на sh"

Отправлено mgdn , 01-Ноя-13 09:51 
Здравствуйте!

В скрипте примерно следующего содержания передаются имена файлов.

root@fr:/tmp/1 # cat ./test.sh
#!/bin/sh
( ls /etc/hosts > /tmp/txt.txt ) > & /tmp/err.txt
( ls /etc/hostsss > /tmp/txt1.txt ) > & /tmp/err1.txt

Может быть передано и несуществующее имя файла. Для того чтобы ошибка не вываливалась на консоль идет вывод ошибки в файл. Если набирать команду из консоли, то отрабатывает правильно и без ошибок.
( ls /etc/hosts > /tmp/txt.txt ) > & /tmp/err.txt

А если в скрипте то
./test.sh: 2: Syntax error: "&" unexpected

Как правильно записать команду в скрипт. Наверно надо как-то правильно экранизировать амперсанд?



Содержание

Сообщения в этом обсуждении
"Правильное написание скрипта на sh"
Отправлено Andrey Mitrofanov , 01-Ноя-13 10:12 
> #!/bin/sh

#!/bin/bash

> Как правильно записать команду в скрипт. Наверно надо как-то правильно экранизировать амперсанд?

Зависит от того, считаешь ли ты POSIX sh религией.


"Правильное написание скрипта на sh"
Отправлено Andrey Mitrofanov , 01-Ноя-13 10:16 
>> #!/bin/sh
> #!/bin/bash

Да, скока ж можно?! Опять бсдешник!

-#!/bin/bash
+#!/usr/bin/env bash

Карма пришла за мной. Не то что за этими [...]ми, поющими дифирамбы фре в новостях и не появляющихся *здесь*.


"Правильное написание скрипта на sh"
Отправлено mgdn , 01-Ноя-13 10:45 
>>> #!/bin/sh
>> #!/bin/bash
> Да, скока ж можно?! Опять бсдешник!
> -#!/bin/bash
> +#!/usr/bin/env bash
> Карма пришла за мной. Не то что за этими [...]ми, поющими дифирамбы
> фре в новостях и не появляющихся *здесь*.

Задолбали. Если бы мне надо было #!/bin/bash, я и сам бы смог 2 буквы дописать. Плохо когда человек не умеет писать по существу. Если нечего сказать, то зачем клаву мучать.

>> Да, скока ж можно?! Опять бсдешник!

Смешно..... говорит о возрасте или о воспитании )


"Правильное написание скрипта на sh"
Отправлено pavel_simple , 01-Ноя-13 11:04 
>>> #!/bin/sh
>> #!/bin/bash
> Да, скока ж можно?! Опять бсдешник!
> -#!/bin/bash
> +#!/usr/bin/env bash
> Карма пришла за мной. Не то что за этими [...]ми, поющими дифирамбы
> фре в новостях и не появляющихся *здесь*.

а ты заметил? , что lavr таки стал заглядывать -- присматривает за несчастны^W инвалидами


"Правильное написание скрипта на sh"
Отправлено Аноним , 05-Ноя-13 06:11 
> а ты заметил?

павлик ви таки уже сдали своего папу в ментовку или ещё нет?


"Правильное написание скрипта на sh"
Отправлено pavel_simple , 05-Ноя-13 07:27 
>> а ты заметил?
> павлик ви таки уже сдали своего папу в ментовку или ещё нет?

обиженый ононим? опять бысданутые кидаются?


"Правильное написание скрипта на sh"
Отправлено Аноним , 06-Ноя-13 00:04 
>>> а ты заметил?
>> павлик ви таки уже сдали своего папу в ментовку или ещё нет?
> обиженый ононим? опять бысданутые кидаются?

Аха .... таки сдали?


"Правильное написание скрипта на sh"
Отправлено lavr , 01-Ноя-13 13:04 
>[оверквотинг удален]
> #!/bin/sh
> ( ls /etc/hosts > /tmp/txt.txt ) > & /tmp/err.txt
> ( ls /etc/hostsss > /tmp/txt1.txt ) > & /tmp/err1.txt
> Может быть передано и несуществующее имя файла. Для того чтобы ошибка не
> вываливалась на консоль идет вывод ошибки в файл. Если набирать команду
> из консоли, то отрабатывает правильно и без ошибок.
> ( ls /etc/hosts > /tmp/txt.txt ) > & /tmp/err.txt
> А если в скрипте то
> ./test.sh: 2: Syntax error: "&" unexpected
> Как правильно записать команду в скрипт. Наверно надо как-то правильно экранизировать амперсанд?

нужно правильно выполнять redirect stdout/stderr

( ls /etc/hosts > /tmp/txt.txt ) >/tmp/err.txt 2>&1
( ls /etc/hostsss > /tmp/txt1.txt ) >/tmp/err1.txt 2>&1

спасет?

собственно что в bourne-shell, что в bash, верхнее почти одинаково

ps. возможно Вам нужно только stdout перенаправлять (без stderr)


"Правильное написание скрипта на sh"
Отправлено михалыч , 01-Ноя-13 13:15 
Да и без скобок тоже работает

#!/bin/sh
ls /etc/hosts > /tmp/txt.txt 2> /tmp/err.txt
ls /etc/hostsss > /tmp/txt1.txt 2> /tmp/err1.txt


"Правильное написание скрипта на sh"
Отправлено mgdn , 04-Ноя-13 21:26 
Спасибо, Всем ответившим.