定义变量:
var=123 //等号两边不能有空格,即使对变量二次赋值,也不能加$号
使用变量:
$var
${var} //加不加{}无所谓,但有时可以区分变量名的边界,如:
"I am ${var}Script."
只读变量:
readonly var
删除变量:unset 命令不能删除只读变量。
unset var
字符串:
单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字串中不能出现单独一个的单引号,但可成对出现,作为字符串拼接使用。
双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
str="Hello, I know you are \"$your_name\"! \n"
Hello, I know you are "runoob"! //可以使用转义双引号
拼接字符串:
# 使用双引号拼接
"hello, "$your_name" !" // hello, runoob !
"hello, ${your_name} !" // hello, runoob !
# 使用单引号拼接
greeting_2='hello, '$your_name' !' // hello, runoob !
greeting_3='hello, ${your_name} !' //hello, ${your_name} !
字符串长度:
${#str}
截取字符串:
${string:1:4} //从index为1开始,截取长度为4
查找:
string="runoob is a great site"
echo `expr index "$string" io` # 查找i或o的首次出现位置,输出 4
数组:
数组定义:
array_name=(value0 value1 value2 value3)
或者
array_name[0]=value0
array_name[1]=value1
读取数组:
valuen=${array_name[n]}
${array_name[@]} // @获取所有元素
# 取得数组元素的个数:
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
传参:
$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数。其中 $0 为执行的文件名。
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。" $* " 等价于 "1 2 3"(传递了一个参数),而 "$@" 等价于 "1" "2" "3"(传递了三个参数)。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
条件判断
if [ $is_chief -eq 1 -a $is_debug == "1" ]; then //注意中括号两边一定要有空格
echo "okokoko"
else
echo "nonono"
fi
is_debug=0
for p in "$@"; do
if [ $p == "--debug=1" ]; then
is_debug=1
fi
done