bash script
2019-05-26 10:27 Gizing 阅读(185) 评论(0) 编辑 收藏 举报执行方式区别
- 三种执行方式:
source
、.
、sh
- 小数点和sh是在开启一个子进程上执行,脚本里的变量和操作不会传到父进程
- source直接在父进程中执行
例如配置生效用
source ~/.bashrc
而不用sh ~/.bashrc
分支
判断符号[]
- 中括号内的每个组件都需要空格键分隔,常用于if..then..fi中
- 中括号内变量,最好都以双引号括起来
- 中括号内常量,最好都以单引号或双引号括起来
- 在判断中,一个等号和两个等号是一样的
name="VB Ta"
[ $name == "VB" ] #会返回参数过多错误,此时比较的是 VB Ta=="VB"
[ "$name" == "VB" ] #比较的是 "VB Ta"=="VB"
if...then
if [ 条件判断式1 ]; then
balala
elif [ 条件判断式2 ]; then #等同于 else if
balala
else
balala
fi #if倒过来写,表示if结束
- &&表示and,||表示or
case...esac
case $变量名 in
"第一个变量内容")
程序段
;; #每个类型结尾用两个连续分号处理
"第二个变量内容")
程序段
;;
*) #等同于default
程序段
;;
esac
函数
function do()
{
程序段
}
- function定义一定要在脚本的最前面(先定义才能用)
- function也有内置变量,$0,$1...,与script中的$num含义一样,但是作用域不同
function do() { echo "Your choice is $1" #输出结果是 Your choice is 1 } case $1 in #这个$1是执行脚本时输入的第一个参数 "one") do 1 #这个1是给do函数的参数 ;; *) do 0 ;; esac
循环
不定循环
while do done
当条件成立时进行循环
while [ condition ]
do #循环开始
程序段
done #循环结束
until do done
当条件成立时终止循环
until [ condition ]
do
程序段
done
for do done
与Java中的for循环含义一样,可用i++
缩写
for (( 初始值; 限制值; 执行步长))
do
程序段
done
for do done(固定循环)
已知要循环的次数
for var in con1 con2 con3 ...
do
程序段
done
第一次循环时,$var内容为con1;第二次循环时,$var内容为con2;...