shell脚本用法笔记

分割字符串

OLD_IFS=$IFS
IFS=" "
read arg1 arg2 arg3 <<< "$args"
IFS=$OLD_IFS

去掉首尾空格

echo "   k1=v1   " | awk '{$1=$1; print}'
k1=v1

字符串包含、开头、结尾

if [[ "$text" == "startsWith"* ]]; then
elif [[ "$text" == *"endWith" ]]; then
elif [[ "$text" == *"value"* ]]; then
fi

输出匹配内容行号

cat $file | grep -n $text | awk -F ':' '{print $1}'

数组元素动态添加

array=()
array+=( a1 )
array+=( a2 )

sed替换内容包含特殊字符

# 用|号当分隔符
sed -i "/^${pkey}=/ s|.*|${pkey}=${pval}|" ${prop_path}

删除匹配内容行

sed -i "/^key=/d" $file

在匹配内容的行上面插入一行

sed -i "${mask}i${line}" $path

指定行数内容替换

sed -i "${ln}c${line}" $path

删除从某行到某行内容

sed -i "${ln},${cl}d" $path

字符串字符转义 / 成 /

echo ${dir} | sed 's/\//\\\//g'

将字符串头几个字符替换

#  /system/etc/test.prop -> /data/etc/test.prop
echo "/system/etc/test.prop" | sed "s/^.\{8\}/\/data\//")"

参数切割,读取第5个参数后面参数

echo "$@" | cut -d ' ' -f 6-"

字符串,号换空格

data_value="$(echo ${data_value} | sed 's/,/ /g')"

读取第N行内容

nline="$(sed -n "${cl}p" $path | awk '{$1=$1; print}')"

简单 if else 合并

[ "open" = "${STATE}" ] && $(set_root 1) || $(set_root 0)

取出文件名

# /data/local/test.png 取出 test
basename $/data/local/test.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容