Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Advanced Bash Shell Scripting Gude.pdf
Скачиваний:
57
Добавлен:
17.08.2013
Размер:
4.82 Mб
Скачать

Variable Assignment

 

Advanced Bash-Scripting Guide:

 

Prev

Chapter 5. Introduction to Variables and Parameters

Next

5.2. Variable Assignment

=

the assignment operator (no space before & after)

Do not confuse this with = and -eq, which test, rather than assign!

Note that = can be either an assignment or a test operator, depending on context.

Example 5-2. Plain Variable Assignment

#!/bin/bash

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 "The values of \"a\" in the loop are "

for a in 7 8 9 11 do

echo -n "$a " done

echo echo

http://tldp.org/LDP/abs/html/varassignment.html (1 of 3) [7/15/2002 6:35:01 PM]

Variable Assignment

# 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

Example 5-3. Variable Assignment, plain and fancy

#!/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 using an exclamation mark (!) in command substitution #+ will not work from the command line,

#+ since this triggers the Bash "history mechanism."

#Within a script, however, the history functions are disabled.

a=`ls -l`

# Assigns result of 'ls -l' command to 'a'

echo $a

# Unquoted, however, removes tabs and newlines.

echo

 

echo "$a"

# The quoted variable preserves whitespace.

 

# (See the chapter on "Quoting.")

exit 0

 

Variable assignment using the $(...) mechanism (a newer method than backquotes)

http://tldp.org/LDP/abs/html/varassignment.html (2 of 3) [7/15/2002 6:35:01 PM]

Variable Assignment

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

Prev

Home

Next

Variable Substitution

Up

Bash Variables Are Untyped

http://tldp.org/LDP/abs/html/varassignment.html (3 of 3) [7/15/2002 6:35:01 PM]

Bash Variables Are Untyped

 

Advanced Bash-Scripting Guide:

 

Prev

Chapter 5. Introduction to Variables and Parameters

Next

5.3. Bash Variables Are Untyped

Unlike many other programming languages, Bash does not segregate its variables by "type". Essentially, Bash variables are character strings, but, depending on context, Bash permits integer operations and comparisons on variables. The determining factor is whether the value of a variable contains only digits.

Example 5-4. Integer or string?

#!/bin/bash

#int-or-string.sh

#Integer or string?

a=2334

let "a += 1" echo "a = $a " echo

b=${a/23/BB} echo "b = $b" declare -i b echo "b = $b"

let "b += 1" echo "b = $b" echo

c=BB34

echo "c = $c" d=${c/BB/23} echo "d = $d" let "d += 1" echo "d = $d"

#Integer.

#Integer, still.

#Transform into a string.

#BB35

#Declaring it an integer doesn't help.

#BB35, still.

#BB35 + 1 =

#1

#BB34

#Transform into an integer.

#2334

#2334 + 1 =

#2335

# Variables in Bash are essentially untyped.

exit 0

http://tldp.org/LDP/abs/html/untyped.html (1 of 2) [7/15/2002 6:35:02 PM]

Bash Variables Are Untyped

Untyped variables are both a blessing and a curse. They permit more flexibility in scripting (enough rope to hang yourself) and make it easier to grind out lines of code. However, they permit errors to creep in and encourage sloppy programming habits.

The burden is on the programmer to keep track of what type the script variables are. Bash will not do it for you.

Prev

Home

Next

Variable Assignment

Up

Special Variable Types

http://tldp.org/LDP/abs/html/untyped.html (2 of 2) [7/15/2002 6:35:02 PM]