hello world
#! /bin/bash 声明为bash执行
#!/bin/bash
# This is a very simple example
echo Hello World
变量
bash的变量无需声明,可以直接使用,切记 等号左右一定不能有空格
引用变量的时候需要在变量名前面加上$符号,否则bash会视为字符串执行
somevar='test'
echo $somevar
字符串
$(($var*3)) $var是字符串,双括号语法支持字符串转数字,然后运算
sips -Z $((${size_array[i]}*2)) $file_2x
sips -Z $((${size_array[i]}*3)) $file_3x
数组
当有变量为如下格式的时候,Bash会自动创建数组
arrary[index]=value
fruits[0]='apple'
fruits[1]='banana'
fruits[2]='orange'
echo ${fruits[1]}
访问数组元素使用花括号,${array[index]}
声明一个数组,并初始化
array=(element1 element2 element3)
输出整个数组
echo ${array[@]}
获取数组长度
${#array[@]}
获取数组第n个元素的长度
${#array[n]}
#! /bin/bash
Unix[0]='Debian'
Unix[1]='Red hat'
Unix[2]='Ubuntu'
Unix[3]='Suse'
echo ${#Unix[3]} # length of the element located at index 3 i.e Suse
添加数组元素
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
Unix=("${Unix[@]}" "AIX" "HP-UX")
echo ${Unix[7]}
"AIX"和"HP-UX"被添加到数组的第7位和第8位
删除数组元素
使用模式(patterns)删除数组元素
按pattern过滤之后存储剩余元素到一个新数组
#!/bin/bash
declare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora');
declare -a patter=( ${Unix[@]/Red*/} )
echo ${patter[@]}
$ ./arraymanip.sh
Debian Ubuntu Suse Fedora
上面的例子删除数组元素形式如Red*
流程控制
条件选择
-z检测字符串长度为0, -n 检测字符串不为0
如果then和if写在同一行的话,then前面要加;
if [ -z $a ];then
echo '$a is empty'
fi
if - then - else - fi 语法
if [ ${size_array[i]} != "1024" ]
then
file_2x=$out_dir/icon-${size_array[i]}@2x.png
file_3x=$out_dir/icon-${size_array[i]}@3x.png
cp $source_file $file_2x
cp $source_file $file_3x
sips -Z $((${size_array[i]}*2)) $file_2x
sips -Z $((${size_array[i]}*3)) $file_3x
else
file_1024=$out_dir/icon-1024.png
cp $source_file $file_1024
sips -Z 1024 $file_1024
fi
for循环
打印目录下所有的文件
#!/bin/bash
for i in $( ls ); do
echo item: $i
done
打印序列
#!/bin/bash
for n in $(seq 1 10);
do
echo $n
done
while循环
i=2
while [[ $i -le 19 ]]; do
file="demo"$i".js"
echo $file
cp demo1.js $file
let i=i+1
done
until语法
#!/bin/bash
counter=$1
until [ $counter -lt 10 ];
do
echo the counter:$counter
let counter=counter-1
done
函数
local声明为局部变量
function hello {
local HELLO=World
echo HELLO
}
比较运算
字符串比较运算符
比较符 | 说明 | 举例 |
---|---|---|
-z string | 如果长度为零则为真 | -z $somevar |
-n string | 如果长度不为零则为真 | -n $somevar |
str1 = str2 | 如果str1与str2相同,则为真 | $str1 = $str2 |
str1 != str2 | 如果长度为零则为真 | $str1 != $str2 |
算术比较符
比较符 | 说明 | 举例 |
---|---|---|
-eq | 等于 | $1 -eq 10 |
-ne | 不等于 | $1 -ne 10 |
-lt | 小于 | $1 -lt 10 |
-gt | 大于 | $1 -gt 10 |
-le | 小于或等于 | $1 -le 10 |
-ge | 大于或等于 | $1 -ge 10 |
continue,break,exit 0
continue,break和主流语言一致
bash好像不支持return ,可以用exit 0
退出脚本
网友评论