Установить -n не работает в сценарии оболочки при выполнении с исходным кодом

Это скрипт оболочки..

#!/bin/bash
set -n
<<COMMENT1
    tHIS IS A MULTILINE COMMENT MAN 

COMMENT1
<<COMMENT1
THII
COMMENT1
:
echo "this is ashok"
echo "${LOGNAME}"

при выполнении с ш и ./ его исполнение хорошо. но когда я выполнил с источником.

ashokkrishna@09:45:56:~/Desktop$ sh hello.sh
ashokkrishna@09:46:02:~/Desktop$ ./hello.sh
ashokkrishna@09:46:23:~/Desktop$ . hello.sh
this is ashok
ashokkrishna

почему вывод идет для сценария, когда я выполняю с помощью команды source(.).

1 ответ

Решение

Цитирование документов о поведении интерактивной оболочки:

  1. -n опция вызова игнорируется, а 'set -n'не имеет никакого эффекта (см. Построение Сета).

Так как вы получили сценарий из интерактивной оболочки, set -n игнорируется

Другие вопросы по тегам