gpt4 book ai didi

Linux bash if else 命令输出不继续?

转载 作者:太空宇宙 更新时间:2023-11-04 05:01:39 24 4
gpt4 key购买 nike

#!/usr/bin/env bash
for x in $(cat $1)
do
wget --recursive -R jpg,bmp,gif,png $x
cd $x
for e in $(ls)
do
a=`file $e | getfield 2`
if [ $a == "directory" ]
then
for enn in $(ls $a)
do
cat $a/$enn | emailaddr
done
else
cat $e | emailaddr
fi
done
cd ..
done

其中 getfield 是像这样的 bash 脚本

#!/usr/bin/env 
cut -d' ' -f$1 oo

我认为值得注意的是,我只是想学习 shell 脚本以使生活更轻松,而不是用 ruby​​ 或其他涉及执行 shell 命令和管道输出的语言编写代码,当我可以这样做时。

我知道当我执行 a=file $e | 时我的脚本被挂起getfield 2,但我似乎不明白为什么。有人可以帮我澄清一下吗?

最佳答案

您根本不需要getfieldbash 有一个内置测试来检查文件是否是目录。

if [[ -d $e ]]; then

脚本本身最好写成

while IFS= read -r x; do
wget --recursive -R jpg,bmp,gif,png "$x"
cd "$x"
for e in *; do
if [[ -d $e ]]; then
cat "$e"/* | emailaddr
else
emailaddr < "$e"
fi
done
cd ..
done < "$1"

关于Linux bash if else 命令输出不继续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30901851/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com