我怎么读>中的第二个参数./b.sh / net / *

时间:2015-02-10 21:07:09

标签: bash shell

这是我教授想要的

  

./ b.sh / net / *

       12 /net/aquota.user
    15751 /net/slackware.iso

这是我的代码

#!/bin/bash

for FILE in $1/*
do
  if test -f "${FILE}"
  then
    inode=$(stat -c %i ${FILE})
    echo $inode $FILE
  fi
done

我知道怎么用$ 1读取它是/ net,但是我的教授希望用户输入/ net / *,我应该改变什么?

1 个答案:

答案 0 :(得分:0)

shell会在脚本运行之前扩展net/*,因此您将获得多个参数,并且只需要循环它们。

#!/bin/bash

for FILE; do                # or for FILE in "$@"; do
  if test -f "${FILE}"      # not really necessary or useful
  then
    inode=$(stat -c %i "${FILE}")
    echo "$inode" "$FILE"   # not really necessary or useful
  fi
done

或更简洁

stat -c '%i %n' "$@"