gpt4 book ai didi

UNIX:如何使用格式打印变量的内容。

转载 作者:行者123 更新时间:2023-11-30 23:50:03 25 4
gpt4 key购买 nike

我只想像在命令行中一样打印 ls -l(每个文件在一个新行上)。我到处寻找解决方案,并且知道我的解决方案应该 有效,但由于某种原因它不起作用。我试过:

    #!/bin/csh
set list = `ls -l`
echo "$list"

和:

    #!/bin/csh
set list = "`ls -l`"
echo "$list"

运气不好。我真正想做的是稍后在 ls -l 上使用 grep(所以我可能会做错),但我不能,因为它将列表打印为一长行。(是的,我必须使用 csh)

最佳答案

我不知道如何解决 csh 在 echo 时将单词连接在一起的行为,但您可以使用类似数组的功能和循环。例如:

#!/bin/csh

set list=( "`printf 'a\nb\nc\n'`" )

echo "count=$#list"
echo "2 = $list[2]"
echo

set n=0
while ( $n < $#list )
@ n += 1
echo "$n : $list[$n]"
end

这对我来说产生了输出:

count=3
2 = b

1 : a
2 : b
3 : c

请注意,我在 FreeBSD 上使用 tcsh。你的 csh 可能不同,你没有提到你的平台。

要将其带回您的文件列表问题,您可以使用类似的循环复制您正在寻找的输出:

#!/bin/csh

set list=( "`ls -l`" )
set n=0
while ( $n < $#list )
@ n += 1
echo "$list[$n]"
end

这里需要重点考虑的是,在(命令替换)反引号 (`...`) 内,输出由 whitespace 分隔,而在双引号内 ( "..."),输出由换行符分隔。

也就是说……

What I really want to do is use grep on ls -l later (so maby I'm going about this wrong), but I can't because it prints list as one long line.

完全有可能! :-) 但是,如果不完全了解您要解决的根本问题,帮助您实现您的 解决方案是我们所能做的最好的事情。当心可怕的XY Problem .

关于UNIX:如何使用格式打印变量的内容。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33376940/

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