2016-03-21 7 views
1

Ich habe einen URI-Schema-Handler, der einen Befehl ausführt, wenn er aufgerufen wird. Wenn ich meinen Typen besuchen //: example.com, Chrome und meine Desktop-Umgebung tatsächlich diesen Befehl ausführen: some-command %uWie manipuliere ich eine String-Variable, wenn sie an einen Befehl übergeben wird?

Wo some-command von mir anpassbar ist, und %u ist eine Variable my-type//:example.com die Zeichenfolge enthält.

So ist der Befehl, der tatsächlich ausgeführt wird: %usome-command my-type//:example.com

Ich möchte so zu verändern, zu tun, was, dass es example.com statt my-type//:example.com

enthält Wie wird das gemacht?

+0

Sie werden einige weitere Details benötigen. Was ist dieser "URI Schema Handler" und in welcher Sprache ist er geschrieben? Wie werden diese Parameter bestanden? – miken32

+0

Der URI-Schema-Handler ist alles, was ich will. Es könnte ein Skript oder ein Browser oder eine Anwendung sein. Worüber ich nachdenke, muss passieren, bevor es das Programm erreicht. Es ist nur etwas, auf das ein Befehl eingestellt ist. –

Antwort

0

können Sie verwenden Bash-Skript folgen, wie Sie es den wirklichen Befehlsnamen

#!/bin/bash 

EXPECTED_ARGS=2 
E_BADARGS=65 
# Check for proper number of command line args. 
if [ $# -lt $EXPECTED_ARGS ] 
then 
    echo "Usage: `basename $0` commmand-for-pass-uri-without-scheme uri" 
    echo "Example: `basename $0` echo my-type://example.com" 
    exit $E_BADARGS 
fi 

COMMAND=$1 
URI=$2 

# extract the protocol 
proto="$(echo $URI | grep :// | sed -e's,^\(.*://\).*,\1,g')" 
# remove the protocol -- updated 
url=$(echo $URI | sed -e s,$proto,,g) 
# extract the user (if any) 
user="$(echo $url | grep @ | cut [email protected] -f1)" 
# extract the host -- updated 
host=$(echo $url | sed -e s,[email protected],,g | cut -d/ -f1) 
# extract the path (if any) 
path="$(echo $url | grep/| cut -d/ -f2-)" 

$COMMAND $url 

Namen als remove-scheme-and-call-command.sh zum Beispiel und stattdessen some-command Set-Befehl und übergeben Sie folgen remove-scheme-and-call-command some-command

Vergessen Sie nicht, Ihr Skript mit chmod + x ausführbar zu machen und Skript hinzuzufügen