使用“set”命令的简单bash脚本

时间:2011-09-20 15:17:01

标签: bash

我应该创建一个脚本,在当前目录中打印所有大小和文件名,按大小排序,使用“set”命令。

#!/bin/bash

touch /tmp/unsorted

IFS='@'
export IFS

ls -l | tr -s " " "@" | sed '1d' > /tmp/tempLS

while read line
do
    ##set probably goes here##
    echo $5 $9 >> /tmp/unsorted
done < /tmp/tempLS

sort -n /tmp/unsorted
rm -rf /tmp/unsorted

按逻辑,这是应该工作的脚本,但它只产生空行。 在与同学讨论之后,我们认为“set”命令必须首先在while循环中。问题是我们无法理解“set”命令的作用以及如何使用它。请帮忙。谢谢。

2 个答案:

答案 0 :(得分:6)

ls -l | while read line; do
  set - $line
  echo $5 $9
done | sort -n

或只是

ls -l | awk '{print $5, $9}' | sort -n

答案 1 :(得分:2)

Set操纵shell变量。这允许您针对特定情况调整当前环境,例如,调整当前的通配规则。

有时需要在脚本中调整环境,以便稍后可以正确设置选项。由于脚本在子shell中运行,因此您调整的选项将不会影响脚本。

This link有大量关于各种命令和选项的信息。