侧边栏壁纸
博主头像
技术探索

行动起来,活在当下

  • 累计撰写 13 篇文章
  • 累计创建 4 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Shell语法

admin
2024-12-01 / 0 评论 / 0 点赞 / 13 阅读 / 0 字

参数扩展

${param#pattern}  # 从前面删除pattern最小匹配
${param##pattern} # 从前面删除pattern最大匹配
${param%pattern}  # 从后面删除pattern最小匹配
${param%%pattern} # 从后面删除pattern最大匹配

${param/pattern/string}  # 用string替换pattern第一次匹配
${param//pattern/string} # 用string替换pattern所有匹配

${param:3:2} # 截取从索引3开始的2个字符

${param:-word} # 判断param未设置或为空则替换为word
${param:=word} # 判断param未设置或为空则param赋值为word

${#param} # param字符串长度

${param^^} # 字符串转大写
${param,,} # 字符串转小写

获取文件名

filename=${f%.*}

获取文件后缀

fileext=${f##*.}

if

if [[ "$1" != "" ]]; then
	echo $1
else
	echo "none"
fi

for

for f in $(ls)
do
	echo $f
done

while

loop=true

# CTRL+C
trap 'onCtrlC' SIGINT
function onCtrlC () {
	loop=false
	echo 'Exit'
}

while $loop
do
	echo "Hello world"
	sleep 1
done

case

# 等待输入
read -p " [yes|no]: " opcode

case $opcode in
	"yes")
		echo "yes"
		;;
	"no")
		echo "no"
		;;
	*)
		echo "none"
		;;
esac

字符串

# 判断字符串为空
if [[ -z "$str" ]]; then
	echo string none
fi

# 判断字符串非空
if [[ -n "$str" ]]; then
	echo string not none
fi

# 字符串比较
if [[ "$str" == "hello" ]]; then
	echo string equal
fi

# 字符串匹配
if [[ "$str" =~ "hello" ]]; then
	echo string pattern
fi

文件

# 文件存在
if [[ -e $file ]]; then
	echo $file exist
fi

# 文件存在且是常规文件
if [[ -f $file ]]; then
	echo $file exist and is a regular file
fi

# 文件可执行
if [[ -x $file ]]; then
	echo $file executable
fi

# 文件夹存在
if [[ -d $file ]]; then
	echo $file directory
fi
0

评论区