我正在尝试在一行上打印两个输出:
4 3
但是我得到了:
4
3
这是我的两个命令:
find "$1" -type f | wc -1
find "$1" -type d | wc -1
我尝试将每个变量分配给一个变量,然后使用echo
或printf
来组合它们,但是似乎没有任何效果。
答案 0 :(得分:1)
我无法重现您的问题。
var1=`find "." -type f | wc -l`
var2=`find "." -type d | wc -l`
echo $var1 $var2
8514 93
但是,如果您想替换输入中的任何\n
个字符,请执行以下操作-
使用tr
替换输入中的任何换行符。
例如,
echo -e "4\n3"
输出
4
3
echo -e "4\n3" | tr '\n' ' '
(用空格替换换行符)
输出
4 3
或者,您可以在将值赋给变量之前添加tr '\n' ''
(用 代替换行符)。
示例:
var1=`find "$1" -type f | wc -1 | tr '\n' ''`
var2=`find "$1" -type d | wc -1 | tr '\n' ''`
echo "$var1 $var2"
答案 1 :(得分:1)
您应该列出完整的示例以及使用的echo命令。
Roger That的答案应该起作用。
您也可以考虑使用
echo -n,例如:
var1="3"
var2="4"
echo -n "$var1"
echo -n " "
echo "$var2"
将产生
3 4
printf,它可以设置格式,例如:
var1="3"
var2="4"
printf "%d %d\n" $var1 $var2
将输出
3 4
答案 2 :(得分:0)
这是来自许多经验的事情之一。通过查看echo
和printf
,您走在正确的轨道上。
我将首先使用命令替换,因为这是我想到的第一个方法。我将其与echo
结合使用。 (这又是一次体验性的事情。)您可以在许多地方通读有关命令替换的信息,尝试使用Google谷歌搜索或查看问题和答案here。
我们的目标可以说是执行以下步骤:
#Not real code
$ echo "<number_of_files> <number_of_directories>"
命令替换仅允许我们使用命令的输出来给我们<number_of_files>
和<number_of_directories>
。为了获得这些输出,我们使用模式$(my_command)
,它将提供正在运行的任何输出
$ my_command
终端上的给出。希望当您用粗体字写上“我们在这里进行命令替换”这样的文字时,这一点将变得更加清晰。
我将想象您有一个类似下面的目录结构。 (我之所以称其为no_stack_dir
,是因为您不希望自己的数字彼此叠加。)
no_stack_dir/
├── dir1
├── dir2
├── file1
├── file2
├── file3
└── file4
我将不创建脚本来简化事情。我将不使用"$1"
,而是使用目录名称-在这种情况下为/home/jsmith147/no_stack_dir
。在展示该方法之前,我希望通过使用以下命令来确保了解我们的目录设置。
$ cd ~
$ pwd
/home/jsmith147
$ls
no_stack_dir
$ls no_stack_dir
dir1 file2
dir2 file3
file1 file4
请注意,我只有2个子目录,因为我们的find
命令将在no_stack_dir
和dir1
的找到目录中包含dir2
。
在这里,我们进行命令替换,并结合echo
。
我们的<number_of_files>
来自命令
find /home/jsmith147/no_stack_dir -type f | wc -l
而我们的<number_of_directories>
来自命令,
find /home/jsmith147/no_stack_dir -type d | wc -l
请注意,我没有将终端提示符$
放在这些命令之前。这是命令替换的地方。我们从
#Not real code
$ echo "<number_of_files> <number_of_directories>"
到
#Real code
$ echo "$(find /home/jsmith147/no_stack_dir -type f | wc -l) $(find /home/jsmith147/no_stack_dir -type d | wc -l)"
我希望我已经通过这些例子弄清楚了,以便您可以编写一个脚本(或其他使用"$1"
的脚本)来运行
$ ./no_stack.sh /home/jsmith147/no_stack_dir
随时提问。还有许多其他方法可以完成您想做的事情。也许SO社区可以提出很多其他方法来产生相同的输出。在这里列出它们会很有趣。