目录
Shell脚本的特点
文件名的后缀一般是.sh。
文件属性一般都是可执行文件。
文件内容的开头都是#!/bin/bash,其中“#!”是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell;后面的“/bin/bash”是指明了解释器的具体位置。
echo
输出内容、文字、字符串。
代码1
test1_1.sh
#!/bin/bash
echo "Hello World !"
给予可执行权限。
chmod 777 test1_1.sh
运行
./test1_1.sh
结果
Shell变量
在Shell编程中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。 Shell在默认情况下不会区分变量类型,即使你将整数和小数赋值给变量,它们也会被视为字符串。
定义变量
Shell支持以下三种定义变量的方式:
变量名=值
variable=value
BianLiangMing1=aaa
变量名='值'
variable='value'
BianLiangMing2='bbb'
变量名="值"
variable="value"
BianLiangMing3="ccc"
注意:
如果值包含了空白符,那么就必须使用引号包围起来。
赋值号=的周围不能有空格。
使用变量
使用一个已经定义了的变量,在变量名前面加美元符号$。 变量名外面的花括号
{ }
是可选的,可加可不加,加花括号是为了帮助解释器识别变量的边界。一般都给所有变量加上花括号{ }
。。
echo $BianLiangMing3
echo ${BianLiangMing3}
echo "BianLiangMing3=$BianLiangMing3AAA"
echo "BianLiangMing3=${BianLiangMing3}AAA"
修改变量的值
BianLiangMing3="ccc1"
echo ${BianLiangMing3}
注意: 第二次对变量赋值时不能在变量名前加$。
单引号和双引号的区别
以单引号
' '
包围变量的值时,单引号里面是什么就输出什么,即使内容中有变量和命令(命令需要反引起来)也会把它们原样输出。这种方式比较适合定义显示纯字符串的情况,即不希望解析变量、命令等的场景。以双引号
" "
包围变量的值时,输出时会先解析里面的变量和命令,而不是把双引号中的变量名和命令原样输出。这种方式比较适合字符串中附带有变量和命令并且想将其解析后再输出的变量定义。
string1='单引号:string1=BianLiangMing3=${BianLiangMing3}...'
string2="双引号:string2=BianLiangMing3=${BianLiangMing3}..."
echo ${string1}
echo ${string2}
命令结果赋值给变量
Shell编程中,将命令的执行结果赋值给变量,有以下两种方式:
变量名=`执行的命令`
variable=`command`
BianLiangMing4=`cat temp1_1.txt`
变量名=$(执行的命令)
variable=$(command)
BianLiangMing5=$(cat temp1_1.txt)
第二种方式较常用。
只读变量
使用readonly命令可以将变量定义为只读变量,只读变量的值不能被改变。
BianLiangMing6="ddd"
readonly BianLiangMing6
BianLiangMing6="ddd1"
删除变量
使用unset命令删除变量。
unset 变量名
unset variable_name
unset BianLiangMing6
代码2
test1_2.sh
#!/bin/bash
echo "**********变量定义**********"
BianLiangMing1=aaa
BianLiangMing2='bbb'
BianLiangMing3="ccc"
echo "---------------------------------------"
echo ""
echo "**********使用变量**********"
echo $BianLiangMing3
echo ${BianLiangMing3}
echo "BianLiangMing3=$BianLiangMing3AAA"
echo "BianLiangMing3=${BianLiangMing3}AAA"
echo "---------------------------------------"
echo ""
echo "********修改变量的值********"
BianLiangMing3="ccc1"
echo ${BianLiangMing3}
echo "---------------------------------------"
echo ""
echo "*****单引号和双引号的区别*****"
string1='单引号:string1=BianLiangMing3=${BianLiangMing3}...'
string2="双引号:string2=BianLiangMing3=${BianLiangMing3}..."
echo ${string1}
echo ${string2}
echo "---------------------------------------"
echo ""
echo "******命令结果赋值给变量******"
BianLiangMing4=`cat temp1_1.txt`
BianLiangMing5=$(cat temp1_1.txt)
echo "使用\`\`"
echo ${BianLiangMing4}
echo "使用\$()"
echo ${BianLiangMing5}
echo "---------------------------------------"
echo ""
echo "***********只读变量***********"
BianLiangMing6="ddd"
readonly BianLiangMing6
BianLiangMing6="ddd1"
echo ${BianLiangMing6}
echo "---------------------------------------"
echo ""
echo "***********删除变量***********"
BianLiangMing7="eee"
unset BianLiangMing7
echo ${BianLiangMing7}
echo "---------------------------------------"
echo ""
给予可执行权限。
chmod 777 test1_2.sh
运行
./test1_2.sh
结果