эхо “-e” ничего не печатает

Если вы знаете, N, количество записей в SAS, которое вам нужно вставить, вы можете выполнить сквозной запрос, чтобы получить N следующих значений из последовательности.

%let N_SEQ_NEEDED = 1000;

Proc SQL;
  connect to oracle …;
  create table work.sequence_numbers as select * from connection to oracle (
    SELECT 
      ROWNUM n,
      THE_NEEDED_SEQUENCE.nextval sequence_value
    FROM   ( 
      SELECT 1 arbitrary_alias
      FROM   dual
      CONNECT BY LEVEL <= &N_SEQ_NEEDED
    )        
  );

Метод CONNECT BY из http://www.orafaq.com/wiki/Oracle_Row_Generator_Techniques

Не гарантируется последовательная природа N следующих значений вам просто нужно знать, что они уникальны и никогда не повторится в будущем.

Объедините или обновите свой набор данных SAS, назначив полученные значения sequence_values ​​столбцу последовательности в наборе данных, а затем выполните INSERT в Oracle с помощью своего кода SAS.

11
задан wheleph 26 November 2008 в 11:03
поделиться

9 ответов

Это - жесткое ;)

Обычно Вы использовали бы двойных тире, чтобы сказать команде, что она должна прекратить интерпретировать опции, но эхо только произведет их:

$ echo -- -e
-- -e

Можно использовать сам-e для обхождения проблемы:

$ echo -e '\055e'
-e

Кроме того, как другие указали, если Вы не настаиваете на том, чтобы использовать встроенный удар echo, Ваш /bin/echo двоичный файл мог бы быть версией GNU инструмента (проверьте страницу справочника), и таким образом поймите POSIXLY_CORRECT переменная среды:

$ POSIXLY_CORRECT=1 /bin/echo -e
-e
12
ответ дан 3 December 2019 в 01:45
поделиться

Может быть лучший путь, но это работает:

printf -- "-e\n"
5
ответ дан 3 December 2019 в 01:45
поделиться

Вы могли обмануть путем выполнения

echo "-e "

Это было бы тире, e, пространством.

Кроме того, можно использовать более сложное, но более точный:

echo -e \\\\x2De
4
ответ дан 3 December 2019 в 01:45
поделиться
 
[root@scintia mail]# POSIXLY_CORRECT=1; export POSIXLY_CORRECT
[root@scintia mail]# /bin/echo "-e"
-e
[root@scintia mail]#
1
ответ дан 3 December 2019 в 01:45
поделиться

Другая альтернатива:

echo x-e | sed 's/^x//'

Это - путь, рекомендуемый autoconf руководством:

[...] часто возможно избежать этой проблемы с помощью 'эхо "x$word"', беря 'x' во внимание позже в канале.

1
ответ дан 3 December 2019 в 01:45
поделиться

После обращения особого внимания на страницу справочника :)

SYSV3=1 /usr/bin/echo -e

работы, на Солярисе, по крайней мере,

1
ответ дан 3 December 2019 в 01:45
поделиться

Иначе:

echo -e' '
echo -e " \b-e"
0
ответ дан 3 December 2019 в 01:45
поделиться
/bin/echo -e

работы, но почему?

[resin@nevada ~]$ which echo 
/bin/echo
-2
ответ дан 3 December 2019 в 01:45
поделиться

Единственный верный способ напечатать любую произвольную строку:

printf "%s" "$vars"
14
ответ дан 3 December 2019 в 01:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: