您的位置:首页 > 运维架构 > Shell

shell 快速入门

2016-11-30 09:19 134 查看
shell--------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash

分号是多个语句之间的分割符号,当只有一个语句的时候,末尾无需分号,最后一个语句后面也无需分号。

echo "What is your name?"
read PERSON   #stdin 获取输入并赋值给 PERSON 变量
echo "Hello, $PERSON" #双引号可有可无,单引号主要用在原样输出中。

1.变量 大小写敏感 注意空格
name=100
name="mozhiyan"
DATE=`date` #命令赋值
val=`expr 2 + 2` #表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2
val=`expr $a \* $b` #乘号(*)前边必须加反斜杠(\)才能实现乘法运算
echo $name
变量名和等号之间不能有空格

2.Shell特殊变量
$0    当前脚本的文件名
$n    传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#    传递给脚本或函数的参数个数。
$*    传递给脚本或函数的所有参数。
$@    传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?    上个命令的退出状态,或函数的返回值。
$$    当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

$* $@ "$@":数组 "$*":字串

3.替换
echo -e "Value of a is $a \n" #这里 -e 表示对转义字符进行替换。如果不使用 -e 选项,将会原样输出
双引号里可以有变量
双引号里可以出现转义字符

${var:-word}    如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。
${var:=word}    如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。

val=`expr 2 + 2`

if [ $a == $b ] #注意:条件表达式要放在方括号之间,并且要有空格,例如 [$a==$b] 是错误的,必须写成 [ $a == $b ]
then
echo "a is equal to b"
fi

比较ref: http://c.biancheng.net/cpp/view/2736.html 
字符串
greeting="hello, "$name

string="abcd"
echo ${#string} #输出 4

string="alibaba is a great company"
echo ${string:1:4} #输出liba

string="ababa is a great company"
echo `expr index "$string" "ib"`
2 #查找子字符串中任一字符位置

NAME=(value0 value1 value2 value3)

NAME[0]="Zara"
NAME[1]="Qadir"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"
//使用@ 或 * 可以获取数组中的所有元素,例如:
${array_name[*]}
${array_name[@]}
//取得数组元素的个数
length=${#array_name[@]} 或者 length=${#array_name[*]}
//取得数组单个元素的长度
lengthn=${#array_name[1]}

printf "%d %s\n" 1 "abc"

判断语句 if
if test $[2*3] -eq $[1+5]; then echo 'The two numbers are equal!'; fi;
The two numbers are equal!

num1=$[2*3]
num2=$[1+5]
if test $num1 -eq $num2
then
echo 'The two numbers are equal!'
else
echo 'The two numbers are not equal!'
fi

echo 'Input a number between 1 to 4'
echo 'Your number is:\c'
read aNum
case $aNum in
1)  echo 'You select 1'
;;
2)  echo 'You select 2'
;;
3)  echo 'You select 3'
;;
4)  echo 'You select 4'
;;
*)  echo 'You do not select a number between 1 to 4'
exit 1 # Command to come out of the program with status 1
;;
esac

for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done

a=0
while [ $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done

#until 循环执行一系列命令直至条件为 true 时停止。
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done

number_one () {
echo "Url_1 is http://see.xidian.edu.cn/cpp/shell/" number_two
}
number_two () {
echo "Url_2 is http://see.xidian.edu.cn/cpp/u/xitong/" }
number_one

$command > file 2>&1

#将外部脚本的内容合并到当前脚本,被包含脚本不需要有执行权限。
source filename
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: