shell脚本输入目录,检测非空,进行循环

来自:    更新日期:早些时候
我在Shell脚本的目录下有test.sh 为什么直接输脚本名test.sh不能执行脚本,输入./test.sh可以执行?~

直接输入可以执行的程序,需要把你要执行的程序放到系统的环境目录中,这样操作系统会自动去环境目录中搜索你的程序,如/bin,例如我们常用到cd, rm, mv ..., 而./表示我们要执行当前目录下的文件,否则操作系统不知道你要执行文件的目录。

可以使用ls或者find来完成对某个文件夹下所有文件的遍历
比如使用ls
可以简单地使用一个通配符来完成
ls 某个目录/*

也可以使用find来完成
比如
find 某个目录

自然的也可以写一个shell脚本来进行遍历
首先进行一个要遍历的文件夹
然后循环查看每个文件
如果该文件是一个文件夹的话则进入该文件夹做和上面相同的事件
这样就可以该整个文件夹内的所有文件进行遍历了
一个简单的代码如下
#!/bin/bash

function show()
{
cd $1

for i in `ls`
do
if [ -d "$i" ]
then
show "$i"
else
echo "$i"
fi
done

cd ..
}

show $1

exit 0

该程序不能遍历以.开头的隐藏文件
可以使用ls -a来进行遍历隐藏文件
遍历时需要注意.和..这两个特殊文件

下面是一个简单的代码
#!/bin/bash

function show()
{
cd $1

for i in `ls -a`
do
if [ "$i" == "." ] || [ "$i" == ".." ]
then
continue;
fi

if [ -d "$i" ]
then
show "$i"
else
echo "$i"
fi
done

cd ..
}

show $1

exit 0

写个大概吧
#!/bin/bash
while ;
do
read -p "请输入你要查询的目录,注意需要用绝对路径" a
if [ -d ${a} ]
then echo “目录存在"
num= `ll -a $a | wc -l` %> /dev/null
if [ ${num} -eq 0 ]
then echo "目录为空"
esle read -p "目录非空,是否清空目录,清空请按y,不清空按n" b
if [ "${b}" == "y" ]
then rm -rf ${a}\/*
fi
fi
else echo "目录不存在"
fi
done

没测试 可能有点小错误 大概是这个样子的

#!/bin/bash
while :
do
read -p "Please enter a path: " dir
[ -d $dir ] || (mkdir -p $dir; exit)
if [ "`ls -A $dir`" == "" ]; then
exit
else
read -p "$dir is not empty, do you want clear it? [yes/no] " choice
if [ "$choice" == "yes" ];then
rm -rf $dir/*
exit
elif [ "$choice" == "no" ];then
continue
fi
fi
done

#直接手写上去的,未经测试,不保证一定运行正确,但逻辑是正确的
#!/bin/bash

exit_flag="N"

while [ "${exit_flag}" = "N" ]
do
echo -n "input directory:"
read line
tmp_dir=${line}

if [ -d ${tmp_dir} ]
then
cnt="`cd ${tmp_dir} | ls -a | wc -l`"
if [ $cnt -gt 0 ]
then
echo -n "directory [${tmp_dir}] is not empty ,clear files (Y/N):"
read cls_flag
if [ "${cls_flag}x" == "Yx" -o "${cls_flag}x" == "yx" ]
then
cd ${tmp_dir} && rm -fr *
exit_flag="Y"
else
exit_flag="N"
fi
else
mkdir -p ${tmp_dir}
exit_flag="Y"
fi
done

#!/usr/bin/env bash
#--------Get current project's directory(path)-----------------#
#path:$Path
Path=`dirname "$0"`
Path=`cd "$Path";pwd`
#-------Get current project's directory(path)------------------#
#----------------------function input your path---------------------#
mydir=
input_dir(){
echo Please input your path \(like:${Path}\):
read inputpath
if test -d ${inputpath};then
echo "your input path is a directory."
num=`ls -a ${inputpath} | wc -l`
if [ $num -gt 2 ];then
echo "your input path is not a empty directory."
echo Do you want to \clear this directory\(dir:${inputpath}\)[Y/N]?
read answer
case "$answer" in
[Yy]*)
mydir=`cd ${inputpath};pwd`
for item in $(ls ${inputpath})
do
echo rm -rfR ${inputpath}/$item
rm -rfR ${inputpath}/$item
done
;;
*)
input_dir
;;
esac
else
echo "your input path is a empty directory."
fi
else
mkdir ${inputpath}
mydir=`cd ${inputpath};pwd`
fi
}
#----------------------function input your path---------------------#
#Run here
input_dir


shell脚本输入目录,检测非空,进行循环视频

相关评论:
  • 17041529405Shell脚本中判断文件,目录是否存在或者具有
    宋芸叶!\/bin\/sh NovaPath=”\/var\/log\/httpd\/”NovaFile=”\/var \/log\/httpd\/access.log”这里的-x 参数判断$NovaPath是否存在并且是否具有可执行权限 if [ ! -x "$NovaPath"]; then mkdir “$NovaPath”fi 这里的-d 参数判断$NovaPath是否存在 if [ ! -d "$NovaPath"]; then mkdir “$Nova...

  • 17041529405编写Shell脚本---接受、判断用户参数
    宋芸叶Shell脚本文件的名称可以任意,但为了避免被误以为是普通文件,建议将 .sh 后缀加上,以表示是一个脚本文件 在上面的 example.sh 脚本中出现了三种不同的元素:执行脚本有两种方式:各变量的作用:用测试语句测试一个文件是否为目录,然后通过 Shell 解释器内设 $? 变量显示上一条命令的返回值 在...

  • 17041529405我在Shell脚本的目录下有test.sh 为什么直接输脚本名test.sh不能执行脚...
    宋芸叶直接输入可以执行的程序,需要把你要执行的程序放到系统的环境目录中,这样操作系统会自动去环境目录中搜索你的程序,如\/bin,例如我们常用到cd, rm, mv ..., 而.\/表示我们要执行当前目录下的文件,否则操作系统不知道你要执行文件的目录。

  • 17041529405编写shell脚本,在脚本中对输入的两个参数进行大小比较。 编写shell脚...
    宋芸叶!\/bin\/bash compile () { local param1="$1"local param2="$2"if [ "$param1" -ge "$param2" ];then echo "param1 >= param2"fi } [ "$#" -eq 2 ] && { compile } || { echo "please input two param!"} !\/bin\/bash num=$(ls | wc -d)echo "${num}"...

  • 17041529405Linux中shell命令相关问题求助大佬
    宋芸叶功能:检测一个目录和(递归地)所有它的子目录中的文件占用的磁盘空间。参数 功能-s [dirName] 显示目录占用总空间-sk [dirName] 显示目录占用总空间,以k...2017-12-06 linux的命令行操作和shell的区别 2014-07-05 关于Linux操作系统的论文 2012-08-12 shell是运行在LINUX操作系统上的脚本文件吗 更多类似问...

  • 17041529405用shell程序写出一个脚本,内容如下:+输入y,Yyes,Yes中一个,则屏幕上...
    宋芸叶以下是一个简单的Shell脚本,用于根据用户输入输出问号:使用方法:打开终端或命令行界面;进入脚本所在目录;输入 .\/script.sh(假设脚本文件名为 script.sh)并按回车键;根据提示输入 y、Y、yes 或 Yes 中的一个,并按回车键;如果输入有效,则屏幕上会输出一个问号;否则会提示输入无效。

  • 17041529405编写一个shell脚本,依次判断位置参数$1-$9代表的文件名,在当前目录下是...
    宋芸叶题主你好,代码及测试截图如下:说明: 上图共有3条命令:第一条: ls -l列出了当前文件夹中共有5个文件, 分别为A,B,C,D,user.sh.这里面user.sh是我们的脚本文件;第二条: cat user.sh 看一下user.sh这个脚本中的内容;第三条: .\/user.sh A B C E 执行脚本;.这里面代码中没有明确给出...

  • 17041529405shell脚本如何判断目录下的多个文件夹是否为空
    宋芸叶directoy=.\/ find ${directoy} -type d | xargs du -sh | grep ^0 | awk '{print $2}'先在指定目录下查找 目录文件, 然后用 du -sh 计算目录大小, 找出大小为0的目录,然后打印出来即可 若是不希望循环查找下去,可以只查找本级目录:ls -l | grep ^d | awk '{print $NF}' | ...

  • 17041529405关于linux,shell脚本中怎样判断文件是否有内容?
    宋芸叶-e File 如果文件File存在(Exist),则为True -s File 如果文件File存在且文件大小(Size)大于零,则为True -f File 如果文件File存在且是普通文件(File),则为True -d File 如果文件File存在且是目录(Directory),则为True -b File 如果文件File存在且是块(Block)特殊文件,则为True...

  • 17041529405编写shell脚本test,输入两个数,如果目录存在文件a则显示该脚本名称和两...
    宋芸叶read -p "输入两个数:" num1 num2 if [ `find \/ -type f -name a|wc -l` -ne 0 ];then echo "$0 $[ $num1 + $num2 ]"else cd pwd fi --- 完善了下 不能输入空 不能输入特殊字符 !\/bin\/sh while true do read -p "输入两个数:" num1 num2 [[ ! -n "$num1...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网