Shell expansion

One of annoying things about Linux shell is the strange shell syntax.

 

Bash brace expansion

==================


The following code cp menu.lst tom menu.lst.bak:


cp /boot/grub/menu.lst{,.bak}

 

 

/boot/grub/menu.lst{,.bak} will be expanded to the orignal pathname and a new pathname suffixed with .bak. Run "echo /boot/grub/menu.lst{,.bak}" to see the effect.

 

 

For a detailed explanation, refer to
http://www.gnu.org/software/bash/manual/bashref.html#Brace-Expansion.

 

Tilde Expansion

=============

The following code sets HADOOP_CONF_DIR to $HADOOP_HOME/conf if HADOOP_CONF_DIR has not been set.

 

HADOOP_CONF_DIR="${HADOOP_CONF_DIR:-$HADOOP_HOME/conf}"

 

It is the ${parameter:−word} pattern.

 

The following code uses ${parameter#word} and ${parameter%word} patterns.

 

#!/bin/bash

for i in $(cut -f 1,3 -d: /etc/passwd) ; do
    echo "${i#*:}" "=" "${i%:*}"
done

 

 

Refer to 

http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion

 

Arrays

======

array=(one two three four)

for i in "${array[@]}"; do
echo $i
done

echo "${array[*]}"
echo "${array[@]}"
echo "${array[0]}"
echo "${#array[0]}"
echo "${#array[@]}"
 

你可能感兴趣的:(html,linux,hadoop,bash)