В чем разница между выражением $((()))и выражением $((()))?

Попробуйте без sudo. Вы входите в корневой дом (/root), а не в дом текущего пользователя(/home/[username]). Это вызвано тем, что ~и sudoиспользуются вместе, ~направляет вас к домашнему директору пользователя, а sudoустанавливает вас как суперпользователя (root ), поэтому ~отправляет вас к корневому дому. Если вам нужно использовать суперпользователя, используйте весь путь к файлу. Вы получите тот же эффект, что и сейчас, выполняя:

sudo su
nano ~/[file path]

Было бы полезно добавить то, что вы используете.

0
23.04.2020, 12:34
2 ответа

Выполнение команд в bashс включенным set -x:

$ set -x
$ echo $( (( 5+5 )) )
++ ((  5+5  ))
+ echo

$ echo $((( 5+5 )))
+ echo 10
10
$ echo $(( ( 5+5 ) ))
+ echo 10
10

Как видите, $(...)в первой команде воспринимается как подстановка команды. Эта подстановка команд запускает команду ((5+5)). Это, в свою очередь, арифметическое вычисление, которое не имеет никакого вывода, поэтому echoне получает никаких аргументов и просто выводит новую строку.

В другом случае (и в дополнительном случае, который я добавил ), $((...))принимается как арифметическое расширение. При этом вычисляется значение (5+5)и заменяется результатом этого вычисления.

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

2
19.03.2021, 02:26

$( (( 5+5 )) ) — это арифметическое выражение 5+5внутри составной арифметической команды (( … ))внутри замены команды $( … ). Составная арифметическая команда не производит никакого вывода, поэтому результат подстановки команды пуст. Составные арифметические команды полезны только для присваивания (у этого нет присваивания )или для их возвращаемого значения (, которое здесь не используется ).

$((( 5 + 5 )))или $(( ( 5+5 ) ))— это арифметическое выражение ( 5 + 5 )внутри арифметического расширения $(( … )). Результатом арифметического расширения является числовое значение (, отформатированное в десятичном формате ).

1
19.03.2021, 02:26

Теги

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