Оболочка Bash :Как присвоить вычисленный результат bc переменной и распечатать его?

Оказывается, Linux испытывает трудности с созданием загрузочного USB-образа с Windows ISO. Я использовал woeusb и смог правильно создать USB.

0
31.10.2021, 08:05
2 ответа

Источник использует обратные кавычки(`)для обозначения подстановки команд. Команда, указанная в обратных кавычках, выполняется, и результат помещается на ее место. В данном случае это простое присвоение переменной, поэтому результат команды присваивается переменной.

Это легко увидеть с опцией -xдля bash:

$ x=`echo "var=500;var%=7;var"|bc`
++ echo 'var=500;var%=7;var'
++ bc
+ x=3

Вместо обратных кавычек вы использовали одинарные кавычки. Одинарные кавычки указывают оболочке сохранять буквальное значение и не применять какую-либо обработку к его содержимому. В результате команда назначается переменной как -. Это соответствующий -xвывод :

.
$ x='echo "var=500;var%=7;var"|bc'
+ x='echo "var=500;var%=7;var"|bc'

Наконец, чтобы распечатать содержимое переменной, вы должны использовать echoили printf. Когда значение 'x' равно 3, запуск $xвыдаст вам сообщение об ошибке -bash: 3: command not found. Запуск $xработал в вашем случае только потому, что команда echoбыла частью содержимого переменной.

3
31.10.2021, 08:51

Как заметил Haxiel, вместо обратных кавычек вы, скорее всего, использовали одинарные кавычки. Но лучше, чем использовать обратные кавычки (`), я предлагаю вам использовать $(). Обратные кавычки устарели, а $()совместим с POSIX.

В вашем примере вы могли бы сделать:

x=$(echo "var=500;var%=7;var" | bc)
echo "$x"

Или в один вкладыш:

echo "var=500;var%=7;var" | bc
2
31.10.2021, 09:09

Теги

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