2010-09-01 21 views
0

當我按Tab鍵時,我正在寫一個簡單的腳本來自動完成。在bash中使用php自動完成Tab鍵

php腳本包含一個簡單的「回聲」。

在這種情況下,自動完成的作品,但一個「標籤」附加到從腳本

scriptPath='/home/hassen/workspace/scripts/bin/test.php' 

_dda() 
{ 
    local cur 
    COMPREPLY=() 
    unset COMP_WORDS[0] #remove "j" from the array 
    cur=${COMP_WORDS[*]} 
    IFS=$'\n\n' read -d '' -a COMPREPLY < <($scriptPath --completion "$cur") 
    return 0 
} 
complete -F _dda dda 

alias dda=$scriptPath 

代碼從PHP腳本使其失去

代碼的輸出

<?php 
echo "hello"; 
?> 

這是令人討厭的部分: 如果我在Python或Ruby中打印回顯,它就像一個魅力 - 即每次我按TAB時,它會調用腳本並輸出hello。

這是PHP還是我的代碼的錯誤? 他們似乎在http://bugs.php.net/bug.php?id=52755

+0

PHP似乎不適合在命令行中運行。它缺少#!/ usr/bin/php5部分。 – fabrik 2010-09-01 11:33:14

+0

@fabrik即使我有這個,也沒有幫助。 我可以使用./test.php或php test.php來調用這個腳本 - 都生成'hello' – hbt 2010-09-01 17:29:29

回答

1

不同意它的工作原理如下期望,你非常確保PHP文件本身不持有標籤,可能是?>後?

版本:5.3.2 PHP,GNU bash的版本4.1.5

+0

是的,我確定。我會嘗試升級。我正在運行PHP 5.2.6 感謝您的測試 – hbt 2010-09-02 03:06:51

0

有是在這裏記錄在PHP已知的問題是可以避免這種情況的工作。 https://bugs.php.net/bug.php?id=53040

使用/ usr/bin中/ 的php-cgi的而不是爲運行腳本,它應該工作的/ usr/bin中/ PHP。

1

CLIFramework提供了一個命令可以幫助您通過您的命令定義生成的bash腳本完成,所以你不必寫用手完成腳本:

https://github.com/c9s/CLIFramework

截屏視頻:

enter image description here

p.s.它也適用於zsh