shell 踩坑笔记

  1. if条件判断:
a="123"
if [ $a = "123" ];then 
	statement
elif [ $a = "234"];then
	statement
fi

错误点在于,判断语句中 = 号两端要用空格隔开
另外注意,[ ]中左右两端也要用空格隔开

  1. 循环书写
a=("abc" "123" "def") #定义数组
for x in {$a[@]} ;	do
	statement
done

错误点在于忘记用{}包裹变量a,另外要记得用a[@]方式表示循环数组中的所有值

  1. bash中的有些命令不能直接在shell中执行
    如ls、pwd等,需要通过如下方式执行
# 用``包裹命令,注意不是单引号
for date in `ls ./${scene}` ; do
	cd `pwd`/${scene}/${date}/select	#cd mv tar等命令是可以直接使用的
	echo `ls -l *.jpg |wc -l` #统计当前目录下图片的数量
  1. sed用法
    对文件内容进行编辑替换等操作
sed -i 'n(文件中的第几行)s/(也可以是其他特殊符号)原字符串/新字符串/' /home/1.txt(待编辑的文件path)
sed -i  "5s%^.*$%dataset_name: /mnt/white_${data}%" filter_config.yaml
#其中^.*$是一正则表达式,匹配任何字符串

错误点在于最开始不知道 /原字符串/新字符串/只能用///这种方式,造成对路径形式的字符串替换错误,后来发现也可以通过%方式进行替换。

你可能感兴趣的:(Shell编程)