#!/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
как ошибки, в чем проблема?
Используйте это вместо:
#!/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 из одноименного пакета или его онлайн-версии.
Используйте это вместо:
#!/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 из одноименного пакета или его онлайн-версии.
Используйте это вместо:
#!/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 из одноименного пакета или его онлайн-версии.