- if条件判断:
a="123"
if [ $a = "123" ];then
statement
elif [ $a = "234"];then
statement
fi
错误点在于,判断语句中 = 号两端要用空格隔开
另外注意,[ ]中左右两端也要用空格隔开
- 循环书写
a=("abc" "123" "def") #定义数组
for x in {$a[@]} ; do
statement
done
错误点在于忘记用{}包裹变量a,另外要记得用a[@]方式表示循环数组中的所有值
- bash中的有些命令不能直接在shell中执行
如ls、pwd等,需要通过如下方式执行
# 用``包裹命令,注意不是单引号
for date in `ls ./${scene}` ; do
cd `pwd`/${scene}/${date}/select #cd mv tar等命令是可以直接使用的
echo `ls -l *.jpg |wc -l` #统计当前目录下图片的数量
- sed用法
对文件内容进行编辑替换等操作
sed -i 'n(文件中的第几行)s/(也可以是其他特殊符号)原字符串/新字符串/' /home/1.txt(待编辑的文件path)
sed -i "5s%^.*$%dataset_name: /mnt/white_${data}%" filter_config.yaml
#其中^.*$是一正则表达式,匹配任何字符串
错误点在于最开始不知道 /原字符串/新字符串/只能用///这种方式,造成对路径形式的字符串替换错误,后来发现也可以通过%方式进行替换。