【问题标题】:Display the argument under the line of user after running php in mac terminalmac终端运行php后在user行下显示参数
【发布时间】:2016-01-14 06:57:40
【问题描述】:

我正在编写一个非常简单的 php 脚本,它获取命令行参数的路径并将其打印出来。

这是我的代码:

<?php

    $argument1 = $argv[1];
    $argument2 = $argv[2];
    echo $argv[1]; 

    ?>

输出:

user-mbp:desktop$ php test_script.php /desktop/my/path/ 
/desktop/my/path/user-mbp:desktop user$ 

You can see the result "/desktop/my/path/" is behind the line of user-mbp:desktop $

但我想要的结果是这样的:

    /desktop/my/path/              <- Line 1
    user-mbp:desktop user$         <- Line 2

你对我的代码有什么提示吗?我很感激。

我尝试了命令echo $argv[1] ."\n",但结果很奇怪:

/desktop/my/path/

    user-mbp:desktop user$ 

您可以看到确实显示在用户行下。 但我不太明白为什么user-mbp:desktop user$ 行会移动并转到下一行!再次感谢!

【问题讨论】:

  • 您忘记了换行符。 echo $argv[1], "\n"。 php 不会自动为您执行换行符,因此输出正好在要输出的数据所在的位置结束。这意味着命令提示符恰好显示在输出的末尾,而不是新行。
  • 如果你多次这样做,创建一个函数:function writeln($str){echo $str ."\n";} writeln($argv[1]);

标签: php command-line-arguments


【解决方案1】:

对于命令行脚本,您总是需要在回显内容的末尾添加换行符。所以,这个:

echo $argv[1] . "\n";

您的 shell 不会自动为您执行此操作,PHP 也不会自动执行此操作,因为它不应该自动执行此操作,并且您没有明确告诉它这样做。

【讨论】:

    猜你喜欢
    • 2023-02-07
    • 2012-04-18
    • 2011-08-18
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2015-03-05
    • 2014-12-12
    • 1970-01-01
    相关资源
    最近更新 更多