The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Замена строк в bash-e , !*! Сергей, 26-Янв-10, 01:22  [смотреть все]
Такой код написан в скрпте script.sh

#!/bin/sh
#!/usr/local/bin/bash
str="a-a-a-"
echo $str
echo ${str//-/}

результат выполнения: ./script.sh: ${str/...}: Bad substitution

В чем загвоздка? Кто-нибудь понимает?
Спасибо за ответ

  • Замена строк в bash-e , !*! Сергей, 01:27 , 26-Янв-10 (1)
    >[оверквотинг удален]
    >#!/bin/sh
    >#!/usr/local/bin/bash
    >str="a-a-a-"
    >echo $str
    >echo ${str//-/}
    >
    >результат выполнения: ./script.sh: ${str/...}: Bad substitution
    >
    >В чем загвоздка? Кто-нибудь понимает?
    >Спасибо за ответ

    Можно конечно запускать bash ./script.sh и тогда работает... но не понятно почему не работает без явного указания bash

    • Замена строк в bash-e , !*! jd, 04:35 , 26-Янв-10 (2)
      >>результат выполнения: ./script.sh: ${str/...}: Bad substitution
      >>
      >Можно конечно запускать bash ./script.sh и тогда работает... но не понятно почему
      >не работает без явного указания bash

      Потому что "${str//-/}" - это конструкция bash, но не sh. Bash предоставляет значительно больший функционал, нежели стандартный sh. Так как первой строкой у вас указан /bin/sh, то именно он и пытается выполнять скрипт, а такой конструкции он не знает. Укажите в качестве исполнителя скрипта (первая строка) bash и будет вам счастье.

      P.S. А вторая строка у вас вообще непонятно, зачем. Каково её назначение?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру