macOS shell 编程记

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}

 

转载于:https://www.cnblogs.com/pinweyshg/p/9146352.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值