chaouche@karabeela ~/DOWNLOADS/MUSIQUE/CD2 $ ls djavan* | awk '{print $5}' | cut -f1 -dM | sum
0
chaouche@karabeela ~/DOWNLOADS/MUSIQUE/CD2 $ sum $(ls djavan* | awk '{print $5}' | cut -f1 -dM)
158.5
chaouche@karabeela ~/DOWNLOADS/MUSIQUE/CD2 $ type sum
sum is a function
sum ()
{
acc=0;
for n in "$@";
do
acc=$(echo $acc + $n | bc);
done;
echo $acc
}
chaouche@karabeela ~/DOWNLOADS/MUSIQUE/CD2 $
如何使第一张表格有效?我喜欢烟斗。
答案 0 :(得分:4)
看起来你混淆了参数和标准输入流。
" |&#34 ;?的含义是什么?将左侧命令的标准输出重定向到右侧命令的标准输入。所以你需要一个读取标准输入而不是参数的函数。以下函数对参数(如果有)进行求和或读取标准输入,如果没有给出参数:
sum ()
{
acc=0;
if [ "$#" -gt 0 ]; then
# We were given arguments
for n in "$@"; do
acc=$(echo $acc + $n | bc)
done
else
# We read standard input line by line
while read line; do
acc=$(echo $acc + $line | bc)
done
fi
echo "$acc"
}