Bash 变量扩展和赋值

wil*_*007 2 bash

#!/bin/bash
echo "hello world"
$a='~'
$b='$a/nlu'
echo $b
Run Code Online (Sandbox Code Playgroud)

我有

./test.sh: line 3: =~: command not found
./test.sh: line 4: =$a/nlu: No such file or directory
Run Code Online (Sandbox Code Playgroud)

作为错误有什么问题?

M. *_*rra 6

改用这个:

#!/bin/bash

echo "hello world"
a='~'
b="$a/nlu"
echo $b
Run Code Online (Sandbox Code Playgroud)
  • 不要$用于任务。

  • 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同名软件包或其在线版本