другое поведение при запуске в режиме nohup (оболочка linux) - PullRequest
1 голос
/ 20 октября 2011

Я пытаюсь выполнить замену строки в оболочке linux,

str=2011/10/10
echo "$str"
a=${str//\//\_}
echo $a

Она может выполняться при вызове команды: ./test.sh Но если я запускаю ее в режиме nohup, используя команду: nohup ./test.sh &

Там написано, что ./test.sh: 8: Плохая замена

Что здесь не так?

Спасибо

1 Ответ

6 голосов
/ 20 октября 2011

Поскольку у вас нет #!/bin/bash в верхней части вашего скрипта, команда 'nohup' использует / bin / sh, а ваша система / bin / sh не BASH.Ваша первая и третья строки, в которых вы назначаете 'str' и 'a', являются неправильными синтаксисом Борна.

Поскольку вы, скорее всего, хотите использовать BASH, а не оболочку, которая использует строгий синтаксис Борна, вы должны добавить #!строка в верхней части вашего скрипта, как это:

#!/bin/bash
str=2011/10/10
echo "$str"
a=${str//\//\_}
echo $a
...