Повторение числа?

Для файла в sysfs я пытался использовать

echo 45>target_size

устанавливать значение к 45. Это перестало работать с недопустимой записью. Однако, если я делаю:

x=45;echo $x>target_size

это хорошо работает. Далее, если я использую очень большое количество, оно дает мне ошибку о наличии недопустимого номера документа. Так, по-видимому, при повторении прямого числа терминал интерпретирует это как дескриптор файла, а не литеральное число. Что надлежащий путь состоит в том, чтобы повторить число?

6
задан 24 January 2017 в 07:07

2 ответа

Это - вопрос того, как оболочка анализирует Вашу команду, я думаю. Когда Вы делаете

echo 45>target_size

, оболочка перенаправляет дескриптор файла 45 в файл target_size и затем выполняется echo без аргументов.

, Если вместо этого Вы делаете

echo 45 >target_size

, это перенаправляет дескриптор стандартного вывода в файл target_size и затем выполняется echo 45.

TL; DR добавляет пробел перед оператором перенаправления.

20
ответ дан 23 November 2019 в 07:16

ответ @steeldriver корректен - пространство между числом и вопросами оператора перенаправления. Это, кажется, непоследовательное поведение, как в моих тестах echo 45>output.txt записи 45 для регистрации на оболочках тире и ksh93.

Как альтернатива Вы могли всегда использовать tee команда с here-string оператор <<<.

tee  output_file.txt <<< "45"

Или с теми оболочками, которые не имеют <<< оператор, echo 45 | tee output_file.txt

3
ответ дан 23 November 2019 в 07:16

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

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