shell 脚本学习笔记
@think3r
2020-12-22 11:07:24
0x00
# 摘抄于 vlc 编译脚本
if [ -z "$MAKEFLAGS" ]; then
UNAMES=$(uname -s)
MAKEFLAGS=
if which nproc >/dev/null; then
MAKEFLAGS=-j$(nproc)
elif [ "$UNAMES" = "Darwin" ] && which sysctl >/dev/null; then
MAKEFLAGS=-j$(sysctl -n machdep.cpu.thread_count)
fi
fi
if [ "${ANDROID_ABI}" = "arm" ] ; then
ANDROID_ABI="armeabi-v7a"
elif [ "${ANDROID_ABI}" = "arm64" ] ; then
ANDROID_ABI="arm64-v8a"
fi
if [ -f $SRC_DIR/src/libvlc.h ]; then
VLC_SRC_DIR="$SRC_DIR"
elif [ -d $SRC_DIR/vlc ]; then
VLC_SRC_DIR=$SRC_DIR/vlc
else
echo "Could not find vlc sources"
exit 1
fi
if [ ! -f "$1" ]; then
echo_props > "$1"
return 0
fi
init_local_props local.properties || { echo "Error initializing local.properties"; exit $?; }
# shell 中写文件 https://blog.csdn.net/werewolf2017/article/details/109818114
rm -rf $VLC_OUT_PATH/Android.mk
cat << 'EOF' > $VLC_OUT_PATH/Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libvlc
LOCAL_SRC_FILES := libvlcjni-modules.c libvlcjni-symbols.c dummy.cpp
LOCAL_LDFLAGS := -L$(VLC_CONTRIB)/lib
LOCAL_LDLIBS := \
$(VLC_MODULES) \
$(VLC_BUILD_DIR)/lib/.libs/libvlc.a \
$(VLC_BUILD_DIR)/src/.libs/libvlccore.a \
$(VLC_BUILD_DIR)/
EOF
- if 判断语句 :
-z
变量为空判断;
"${ANDROID_ABI}" = "arm"
判断字符串相等, 只用一个 =
号;
-f
文件存在判断;
-d
文件夹存在判断;
!
结果取反;
uname -s
操作系统;
which nproc >/dev/null
是否存在制定命令;
nproc
等价于 sysctl -n machdep.cpu.thread_count
都是获取 cpu 核数;
which
等价于 command -v
都是查找命令位置的;
||
执行对应命令, 有错误时, 执行之后的命令;
时间计算
if [ "$(uname -s)" = "Linux" ]; then
date_execute="date"
elif [ "$(uname -s)" = "Darwin" ]; then
date_execute="gdate"
fi
if command -v $date_execute > /dev/null; then
startTime=$($date_execute +'%Y-%m-%d %H:%M:%S')
#执行程序
endTime=$($date_execute +'%Y-%m-%d %H:%M:%S')
start_seconds=$($date_execute --date="$startTime" +%s);
end_seconds=$($date_execute --date="$endTime" +%s);
echo -e "_____> using ${bldgrn}" $((end_seconds-start_seconds)) "${txtrst} s"
fi
ijk 源码文件名修改
#!/bin/sh
find . -path "*ijk*" | while read line ;
do
DistName=$(echo $line|sed 's/ijk/think/g')
echo "Src: $line ; DistName: $DistName"
if [ -d $line ]; then
mkdir -p $DistName
elif [ -f $line ]; then
DistFileDir=${DistName%/*}
if [ ! -d $DistFileDir ]; then
mkdir -p $DistFileDir
fi
cp $line $DistName
fi
done