Как изменить значение аргумента в сценарии?

Я попробовал следующий маленький простой сценарий:

#!/bin/bash
$1="bar"
echo $1

Но когда я работаю ./script foo Я получаю ошибку, и значение не изменяется:

/home/mika/script: line 2: foo=bar: command not found
foo

Я знаю, что 1$ является первым аргументом, который Вы передаете своему сценарию. Но даже как это я хочу изменить его значение.

9
задан 31 March 2014 в 05:41

3 ответа

Можно использовать встроенное set:

#!/bin/bash
set -- "bar"
echo $1

Источник и больше о: Изменение параметр командной строки - удар .

9
ответ дан 16 November 2019 в 16:11

Вы не можете заменить те переменные непосредственно. Вы могли сказать:

x=$1
echo $x

Тогда можно использовать $x вместо этого

Используя $1=bar, сразу заменит первым параметром $1, и Вы по существу заявляете "foo=bar", и он интерпретируется как команда "нечто", не переменное "нечто";

4
ответ дан 16 November 2019 в 16:11

Не используйте использование $1 для этого, в bash, и другие оболочки, $1 первый аргумент, который Вы передаете своему сценарию:

#!/bin/bash
echo $1

при выполнении вышеупомянутого как foo.sh hello оно распечатает hello, так как это - 1-й аргумент. Кроме того, Вы называете переменную var и к переменной содержание как $var. Так, для получения поведения, Вы ожидаете, просто используете другое название своей переменной и не используете $:

#!/bin/bash
var="bar"
echo $var
2
ответ дан 16 November 2019 в 16:11

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

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