首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用subshell遍历文件参数

使用subshell遍历文件参数
EN

Stack Overflow用户
提问于 2017-09-04 12:32:50
回答 1查看 64关注 0票数 1

在我的下标中迭代我的脚本有一些困难。问题似乎是我运行它,它只迭代我的$@列表的第一个索引。我认为它在继续到下一个文件之前会停止并等待更改。我下标的要点是使用我的“单文件脚本”同时检查多个文件。如果我更改了我的文件,它将继续到下一个索引,但如果我允许的话则不会。我希望我说得很清楚。谢谢!

脚本1:

代码语言:javascript
复制
#!/bin/bash

timestamp() {
  date +"%T"
}

FILE=$1
timeer=$(stat -f "%Sm" $FILE)
myDate=$(date +%b" "%d" "%H:%M:%S" "%Y)
    if [ -f $FILE ]; then
        timestamp
        echo "Filen{$FILE} ble opprettet"
    fi
while :
do
    Atimeer=$(stat -f "%Sm" $FILE)

        if [[ "$Atimeer" != "$timeer" && -f $FILE ]]; then
            timestamp
            echo "Filen ble endret!!!" 
            exit 130
    fi

   if [ ! -f "$FILE" ]; then
     echo "Filen {$FILE} ble slettet.."
     exit 130
    fi
done

脚本2:

代码语言:javascript
复制
    #!/bin/bash

if [ $# -lt 1 ]; then
    echo "Not enough arguments, Call this script with"
    echo "Write: ${0} <file.name>"
    exit 1
fi

while : 
do

    for i in "${@}"
    do
    echo $i
    sh filkontroll.sh "$i"
    done

sleep 3

done
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-04 12:42:17

通常,shell脚本将等待每个命令完成,然后再转到下一个命令。这就是在你的script2中发生的事情

代码语言:javascript
复制
sh filkontroll.sh "$i"

等这一切结束才能继续前进。

如果要同时运行多个命令,则应该将命令放在后台,方法是将&放在行尾,如下所示

代码语言:javascript
复制
sh filkontroll.sh "$i" &

或者考虑使用像GNU parallels这样的工具进行并行化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46037153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档