Расширение и присвоение переменной Bash

#!/bin/bash echo "hello world" $a='~' $b='$a/nlu' echo $b

Я получил

./test.sh: line 3: =~: command not found ./test.sh: line 4: =$a/nlu: No such file or directory

как ошибки, в чем проблема?

2
задан 23 January 2018 в 01:45

3 ответа

Используйте это вместо:

#!/bin/bash

echo "hello world"
a='~'
b="$a/nlu"
echo $b
Не используйте $ для назначений. b='$a/nlu'. Выражения типа $a не расширяются в одинарных кавычках, для этого используются двойные кавычки. Как указано @steeldirver ./test.sh: line 4: =$a/nlu: No such file or directory, результат $b не распространяется на ничего, поскольку назначение не было выполнено должным образом, а затем bash пытается выполнить =$a/nlu в качестве команды. Точно так же для ./test.sh: line 3: =~: command not found применяется.

Для будущих ошибок используйте shellcheck из одноименного пакета или его онлайн-версии.

6
ответ дан 22 May 2018 в 15:23

Используйте это вместо:

#!/bin/bash echo "hello world" a='~' b="$a/nlu" echo $b Не используйте $ для назначений. b='$a/nlu'. Выражения типа $a не расширяются в одинарных кавычках, для этого используются двойные кавычки. Как указано @steeldirver ./test.sh: line 4: =$a/nlu: No such file or directory, результат $b не распространяется на ничего, поскольку назначение не было выполнено должным образом, а затем bash пытается выполнить =$a/nlu в качестве команды. Точно так же для ./test.sh: line 3: =~: command not found применяется.

Для будущих ошибок используйте shellcheck из одноименного пакета или его онлайн-версии.

6
ответ дан 17 July 2018 в 22:29

Используйте это вместо:

#!/bin/bash echo "hello world" a='~' b="$a/nlu" echo $b Не используйте $ для назначений. b='$a/nlu'. Выражения типа $a не расширяются в одинарных кавычках, для этого используются двойные кавычки. Как указано @steeldirver ./test.sh: line 4: =$a/nlu: No such file or directory, результат $b не распространяется на ничего, поскольку назначение не было выполнено должным образом, а затем bash пытается выполнить =$a/nlu в качестве команды. Точно так же для ./test.sh: line 3: =~: command not found применяется.

Для будущих ошибок используйте shellcheck из одноименного пакета или его онлайн-версии.

6
ответ дан 23 July 2018 в 23:07

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

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