5. 判断文件夹或目录是否存在
# 文件夹不存在 则创建 if [ ! -d "./data" ] then mkdir ./data else echo "文件夹已经存在" fi # 文件存在 则删除 if [ ! -f "./data/1.txt" ] then echo "文件不存在" else rm -rf ./data/1.txt fi # 判断文件夹是否存在 if [ -d "./data" ] then echo 文件夹存在 else echo 文件夹不存在 fi # 判断文件是否存在 if [ -f "./data/1.txt" ] then echo 文件存在 else echo 文件不存在 fi
文件比较符:
-e filename 如果 filename 存在,则为真 [ -e filename ] -d filename 如果 filename 为目录,则为真 [ -d filename ] -f filename 如果 filename 为常规文件,则为真 [ -f filename ] -L filename 如果 filename 为符号链接,则为真 [ -L filename ] -r filename 如果 filename 可读,则为真 [ -r filename ] -w filename 如果 filename 可写,则为真 [ -w filename ] -x filename 如果 filename 可执行,则为真 [ -L filename ] filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ filename1 -nt filename2 ] filename1 -ot filename2 如果 filename1 比 filename2 旧,则为真 [ filename1 -ot filename2 ]
4. macOS 不支持 ll (需要使用 ls -l 实现),事实上 ll 在 linux 下是 ls -l 的快捷键。
ls 显示当前目录下文件。
ls -l 显示当前目录下文件详细信息。
#以下命令均不包含".",".."目录,以及"."开头的隐藏文件,如需包含,ll 需要加上 -a参数 #当前目录下文件个数,不包含子目录 ll |grep "^-"|wc -l #当前目录下目录个数,不包含子目录 ll |grep "^d"|wc -l #当前目录下文件个数,包含子目录 ll -R|grep "^-"|wc -l #当前目录下目录个数,包含子目录 ll -R|grep "^d"|wc -l
3. 遍历目录
#!/bin/bash function getdir(){ for element in `ls $1` do dir_or_file=$1"/"$element if [ -d $dir_or_file ] then getdir $dir_or_file else echo $dir_or_file fi done } root_dir="/home/test" getdir $root_dir
2. 字符串判空有空格报错:binary operator expected
#!/bin/bash args="na me" if [ -n $args ] then echo 'args:' $args else echo 'args is empty.' fi
line 5: [: na: binary operator expected
args is empty.
解决方法:使用 [[ -n ${ARG} ]]
或 [ -n "${ARG}" ]
1. 变量赋值"="两边不能有空格
eg: name="name"
引用变量 $name 或者 ${name}