gpt4 book ai didi

linux - 为什么 bc 和 args 不能在一行中一起工作?

转载 作者:IT王子 更新时间:2023-10-29 01:23:20 26 4
gpt4 key购买 nike

我需要帮助在同一行中使用 xargs(1) 和 bc(1)。我可以多行解决,但我真的想在一行中找到解决方案。

这里是问题所在:以下行将打印 file.txt

的大小
ls -l file.txt | cut -d" " -f5

并且,下一行将打印 1450(显然是 1500 - 50)

echo '1500-50' | bc

尝试将这两者相加,我这样做:

ls -l file.txt | cut -d" " -f5 | xargs -0 -I {} echo '{}-50' | bc

问题是,它不起作用! :)

我知道 xargs 可能不是正确的命令,但它是我能找到的唯一可以让我决定将从管道获取的参数放在哪里的命令。

这不是我第一次遇到此类问题。这将是一个很大的帮助..

谢谢

最佳答案

如果你这样做

ls -l file.txt | cut -d" " -f5 | xargs -0 -I {} echo '{}-50'

你会看到这个输出:

23
-50

这意味着 bc 没有看到完整的表达式。

只需使用 -n 1 而不是 -0:

ls -l file.txt | cut -d" " -f5 | xargs -n 1 -I {} echo '{}-50'

你得到了

23-50

哪个 bc 会愉快地处理:

ls -l file.txt | cut -d" " -f5 | xargs -n 1 -I {} echo '{}-50' | bc
-27

所以您的基本问题是,-0 不需要行,而是 \0 终止字符串。因此,管道中先前命令的换行符会混淆 bc 的表达式。

关于linux - 为什么 bc 和 args 不能在一行中一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17906341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com