> For the complete documentation index, see [llms.txt](https://bash.netdpi.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bash.netdpi.net/di-er-bu-ji-chu/di-si-zhang-bian-shu-yu-can-shu/4.2-bian-shu-fu-zhi.md).

# 4.2 變數賦值

\=

賦值的操作元（= 的前後都不能有空格）

注意：不要將 = 與 -eq 混淆了，-eq 是比對數值是否相等，而不是賦值！

另外要注意，= 可以是賦值的操作元也可以是測試操作員（比對字串是否相等），取決於上下文的語意而定。

**Example 4-2.  單純的變數賦值**

{% code lineNumbers="true" %}

```bash
#!/bin/bash
# Naked variables

echo

# When is a variable "naked", i.e., lacking the '$' in front?
# When it is being assigned, rather than referenced.

# Assignment
a=879
echo "The value of \"a\" is $a."

# Assignment using 'let'
let a=16+5
echo "The value of \"a\" is now $a."

echo

# In a 'for' loop (really, a type of disguised assignment):
echo -n "Values of \"a\" in the loop are: "
for a in 7 8 9 11
do
  echo -n "$a "
done

echo
echo

# In a 'read' statement (also a type of assignment):
echo -n "Enter \"a\" "
read a
echo "The value of \"a\" is now $a."

echo

exit 0
```

{% endcode %}

**Example 4-3. 變數的賦值，單純與花式**

{% code lineNumbers="true" %}

```bash
#!/bin/bash

a=23              # Simple case
echo $a
b=$a
echo $b

# Now, getting a little bit fancier (command substitution).

a=`echo Hello!`   # Assigns result of 'echo' command to 'a' ...
echo $a
#  Note that including an exclamation mark (!) within a
#+ command substitution construct will not work from the command-line,
#+ since this triggers the Bash "history mechanism."
#  Inside a script, however, the history functions are disabled by default.

a=`ls -l`         # Assigns result of 'ls -l' command to 'a'
echo $a           # Unquoted, however, it removes tabs and newlines.
echo
echo "$a"         # The quoted variable preserves whitespace.
                  # (See the chapter on "Quoting.")

exit 0
```

{% endcode %}

使用$(...) 的方式給變數賦值（比使用 \`\` 還新的方式）這就是第十二章的指令替代方式。

{% code lineNumbers="true" %}

```bash
# From /etc/rc.d/rc.local
R=$(cat /etc/redhat-release)
arch=$(uname -m)
```

{% endcode %}
