BASH - 循环参数

时间:2015-12-25 15:49:47

标签: bash shell loops

我一直在尝试许多不同的方法来循环遍历参数,使用for和while循环的不同方法,但它不起作用。我的脚本应该接受争论并回答它们是文件,指南等等。

while $1 in "$@" ;do

if [ -f $1 ];then
        echo "$1        regular file"

elif [ -d $1 ];then
        echo "$1        directory"

elif [ -f $1 ];then
        echo "$1        excuteable file"

elif [ -h $1 ];then
        echo "$1        symbolic"

else
        echo "$1        Does not exist"
fi

1=$(( $1 + 1 ))

done

如何循环每个参数?

2 个答案:

答案 0 :(得分:1)

这是你想要使用的:

for arg in "$@"; do
    if [ -f $arg ];then
        echo "$arg        regular file"
    elif [ -d $arg ];then
        echo "$arg        directory"
    elif [ -f $arg ];then
        echo "$arg        excuteable file"
    elif [ -h $arg ];then
        echo "$arg        symbolic"
    else
        echo "$arg        Does not exist"
    fi
done

第一次循环,$arg成为第一个参数。下一次,它成为第二个参数,等等。

通常,for循环会迭代您提供的任何项目,并将每个项目分配给变量。例如,如果你做了

for x in a b c; do
    echo $x
done

然后$x将是“a”第一次通过循环,然后是“b”,然后是“c”,所以你的输出将是:

a
b
c

在顶部的代码中,我们不是使用显式值,而是使用"$@"代替,这意味着“我们传递给此脚本的任何参数”。

答案 1 :(得分:1)

<div id="myModalTransportDetails" class="modal fade" role="dialog" tabindex="-1" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">&times;</button> <h4 class="modal-title">REGnr</h4> </div> <div class="modal-body" id="orderDetails"> <div class="form-horizontal"> <div class="form-group"> <label class="control-label col-sm-4">LP:</label> <div class="col-sm-8"> <input type="text" class="form-control red-stripe" id="label1"> </div> </div> </div> </div> <div class="form-group"> <label class="control-label col-sm-4 text-left">Arrive date:</label> <div class="col-sm-8"> <input type="text" class="form-control red-stripe" id="label3"> </div> </div> </div> </div> </div> <div class="modal-footer"> <a href="@Url.Action("Details", "GRTE", New With {.id = 1})" class="btn btn-primary" id="details"> Show pictures <span class="glyphicon glyphicon-picture" aria-hidden="true"></span> </a> <button type="button" class="btn btn-warning glyphicon glyphicon-off" data-dismiss="modal"> Close</button> </div> </div> </div> </div> 使用条件,它不会迭代列表。

while

要迭代列表,请使用while (( $# )); do if [[ -f "$1" ]] ; then echo File "$1". elif ... fi shift # Remove the first argument from $@. done

for