新建&运行
shell脚本 test.sh 第一行添加:
#!/bin/bash
然后就可以在shell窗口中:
sh test.sh
bash test.sh
[ [ 格 式 ] ]
关于空格、回车
任 何 地 方不 要 随 意 添 加 空 格 、回 车 !
文档结尾不要windows回车符\r
==
附近不要有空格
条件语句标准(注意空格):
if [ $check=="string" ] # 比较字符串
if [ $num -eq 2 ] # 比较数值
此外注意所使用的编辑器、系统:
windows下回车,会加入
\r
推荐使用MobaXterm自带编辑器,然后选择Format > UnixFormat
读入文本
#!/bin/bash
for line in `cat ./tmp/__par__.txt`
do
name=$line
echo $name
name=${name%%.*}.json
echo $name
python voc2coco.py $line '' $name
done
截取、生成字符串
%% *
:从右侧第一个 . 出现开始,截取其左侧所有值
name=${name%%.*}
% *
:从左侧第一个 . 出现开始,截取其左侧所有值
name=${name%.*}
从第4个字符开始(不包括第4个),截取右侧3个字符
name=${name:4:3}
从第4个字符开始,截取右侧所有
name=${name:4}
从倒数第4个字符开始,截取右侧所有
name=${name:0-4:}
给字符串添加 .json
name=${name}.json
判断
数字判断一些命令
-gt是大于的意思
-lt是小于
-eq是等于
-ne是不等于
-ge是大于等于
-le是小于等于
#!/bin/bash
if [ $1 -gt $2 ]
then echo "$1>$2"
else echo "$2>$1"
fi
字符串判断
if [ $1=="happ!" ]
then echo "$1>$2"
else echo "$2>$1"
fi
退出
if [ 1 ] ; then
exit
fi
Python传参
test.py
import sys
if __name__=="__main__":
sys.exit(1)
test.sh
python test.py
t=$?
if [ $t -eq 1 ]; then
echo $t
fi
批量复制
如下命令批量复制时,如果文件数量过多,会报错——列表太长:
cp ./A/* ./B/
改用如下命令:
cp -r ./A/. ./B/
用该命令合并两个目录A、B下的内容到目录C下:
cp -r ./A/. ./C/
cp -r ./B/. ./C/
计数
$#
:输入bash脚本的参数数量
${#list}
:list计数
复制
显示详细信息
cp -v src dst