#!/bin/bash
if test $# -ne 2
then
echo "Error : Invalid number of arguments"
else
if [ -d $1 ]
then
if [[ $2 =~ ^[0-9]+$ ]]
then
ls -l $1 | while read line
do
eval "echo $line | cut -d' ' -f5" | while read ln
do
if [[ $ln -gt $2 ]]
then
echo $line
fi
done
done
else
echo $2" is not a integer"
fi
else
echo "The repertory "$1" does not exist "
fi
fi
问题是制作cpp,就像命令cp一样。如果我们不给出2个参数,它应该正确反应的脚本。我不明白这个脚本从第10行开始做什么。
此代码如下Explain me 2 lines of this shell script。
由于
答案 0 :(得分:0)
如果不逐行处理代码并解释它,我会指向http://explainshell.com,它接受一系列shell代码并在每个参数的手册中放置评论。
例如,这是上面第12行的一部分:http://explainshell.com/explain?cmd=echo+%24line+%7C+cut+-d%27+%27+-f5
它可以帮助你逐行完成并弄清楚发生了什么。
答案 1 :(得分:0)
单词:它从目录ls -l
中选择$1
的行,其大小大于$2
。
如果该代码位于名为script.sh的文件中,则称为:
$ ./script.sh /home/user 130000
它会打印ls -l /home/user
所有大小超过130000的行。
我不知道为什么eval在:
eval "echo $line | cut -d' ' -f5" | while read ln
该行的工作方式与:
相同echo $line | cut -d' ' -f5 | while read ln