BASH nullglob和dotglob
时间:2019-11-20 08:53:02 来源:igfitidea点击:
BASH下nullglob和dotglob变量如何使用?
如何检查目录中是否有.cpp文件?
在bash脚本中,匹配单词中如果包含*,?或者[
。那么将其视为匹配模式符。
nullglob
:如果设置了nullglob,bash允许将没有匹配的文件名变成空字符串,而不是它们自己的名字。这对于检查目录中的任何* .mp3或* .c文件很有用。dotglob
:如果设置了dotglob,bash将把以点号开头的文件包含到匹配结果中。
如何设置和取消设置nullglob变量?
使用shopt命令切换变量的值。 -s选项启用nullglob效果,-u选项禁用nullglob选项。
shopt -s nullglob # enable shopt -u nullglob # disable
示例:检查目录中是否存在* .mp3文件:
#!/bin/bash old=$(cd) [ $# -eq 0 ] && exit 1 [ -d ] && cd || exit 2 shopt -s nullglob found=0 for i in *.mp3; do echo "File $i found" # or take other action found=1 done shopt -u nullglob [ $found -eq 0 ] && echo "Directory is empty" cd $old
如果没有nullglob,则仅当给定目录中没有文件时,才会扩展为*.mp3。