我应该创建一个脚本,在当前目录中打印所有大小和文件名,按大小排序,使用“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”命令的作用以及如何使用它。请帮忙。谢谢。
答案 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有大量关于各种命令和选项的信息。