Я пробовал следующий небольшой простой скрипт:
#!/bin/bash
$1="bar"
echo $1
Но когда я запускаю ./script foo, я получаю ошибку и значение не изменяется:
/home/mika/script: line 2: foo=bar: command not found
foo
Я знаю $ 1 - это первый аргумент, который вы передаете своему скрипту. Но даже так я хочу изменить свою ценность.
Вы не можете напрямую изменять эти переменные. Вы можете сказать:
x=$1
echo $x
Тогда вы можете использовать $x вместо
Используя $1=bar, вы сразу же замените первый параметр для $1, и вы, по существу, заявляете [ f5], и интерпретируется как команда «foo», а не переменная «foo»;
Не используйте для этого bash и другие оболочки использовать $1, $1 - это первый аргумент, который вы передаете своему скрипту:
#!/bin/bash
echo $1
Если вы запустите выше как foo.sh hello, он будет печатать hello, так как это первый аргумент. Кроме того, вы ссылаетесь на переменную как var и на содержимое переменной как $var. Итак, чтобы получить поведение, которое вы ожидаете, просто используйте другое имя для своей переменной и не используйте $:
#!/bin/bash
var="bar"
echo $var